Started on SubscriptionSet

The purpose of the class is to more effectively store a large amount of
subscriptions.
Documentation update
Added IMarshal methods
Implemented marshal functionality
Implemented the enumerator code
Added a placeholder method for subscribing to events
Added a module interface for subscription hosts
Started a request message for subscription list
Added message type IDs for subscription list request
Added a default Marshal() method for requests

A lot of request methods don't have a payload, so they can just return
null in Marshal(). The default Marshal() method does this.
Made ISubscriptionModule extend IModule
Changing return type of GetAvailableSubscriptions()
Changed to implement ICollection
Started a read-only wrapper class for collections

For some reason, the .NET framework requires a list for their
ReadOnlyCollection. This class does the same thing, but only requires an
ICollection instead of an IList.
Added a constructor
Implemented methods and properties
Implemented collection methods
Implemented CopyTo()
Changed return type to ICollection<SubscriptionId>
Added empty and copy constructors