Updates to Protected model

- moved internal storage of protected keys to "_body" instead of "body"
- made a configurable parameter, Protected.body_key, which holds the key
  when serializing/deserializing to put/get encrypted data from in the
  object passed/created.

the idea of the two changes is that a) a model can make use of the field
"body" in its data without worrying about collisions with the
protection scheme, and secondly, some models may want to store their
encrypted data in a field OTHER than body in the database.
Refactoring/commenting Protected model

Made some adjustments to the PRotected model's code: reformatted some
redundant blocks, tabbed a lot of assignments, and moved some functions
around.

Also made an effort to really go through everything and comment the hell
out of it. This model is the backbone of the app, it's got to be
polished.