Optimize marshaling

- marshal_dump and marshal_load makes sure no unnecessary instance vars are
  marshalled
- don't cache the api for now because of a marshaling bug in 1.9.3
Add specs for User