Context implementation for TileGX

This patch adds an implementation of the `cps_context` functions for
Tilera's TileGX platform.  It's pretty straightforward: same basic
structure as the other implementations, but with a different assembly
syntax, and with a lot more registers to save.  Like the other
implementations, we assume that if contexts are migrated between
threads, then they're not allowed to acccess thread-local storage.  This
means that we save the value of the `tp` register (which is used on
TileGX to locate the current thread's thread-local storage area) when
the context is created.