Reimplementing Fields

Fields have gotten pretty unwieldy.  They need to be moved out of a
single enum.  Moving from an enum-based field to a class-based one.
Adding CollaborationField
Adding CommentField
Adding Discussion Field
Altering Field namespace
Adding UserField
Adding EnterpriseUserField
Changed *UserField inheritence
Each Field type is now totally self-contained

Inheritence doesn't really work here.  A FileField[] can't contain
FileField.Size, because this value was of type Field and not FileField.
This results in a considerable duplication of code, but so it goes.  I
don't know of a better way to handle it.
Missed DiscussionField on last commit.
BoxManager.Discussion (mostly) uses new Fields
Collaborations now use new Fields
Finalized Field reiml; Fixed Ent. User update

All usages of the Field enum have been replaced by a comparable IField
object.  Fixed a bug in which a user was being created and serialized
with a null 'enterprise' field, which immediately cast the user out of
the enterprise.
Converted all *Field[] to IEnumerable<*Field>
All *Field classes are now sealed
Added error handling for common error types