Finite Field Assembly: A Language for Emulating GPUs on CPU