nouveau: misc fixes from upstream + NVAF support
This looks far far worse than it is... The reason:
- NVAF support came after nv50_grctx.c was de-magiced (ie. lots of
comments explaining what all the hexified numbers are for)
- nv50_grctx.c de-magic depended on an earlier commit which changed
all gpu object accessors from 32-bit indices to byte offsets
All in all, it was easier to pull in those big scary-looking (but
harmless) commits than to risk messing up a backport.