Refactored design

Removed ObjectMemento
MementoFactory now creates all IMementoComponents for a given object
Refactored PropertyAnalyzer and added MementoCollection attribute
Added validation for collection attribute usage
Moved common Type analysis to TypeExtensions
Removed unused methods
CollectionAnalyzer draft
Simplified CollectionsAnalyzer implementation
Finished implementing CollectionAnalyzer
Updated documentation
Added integration tests for registering collections
Fixed extension IsCollection: consider implemented interfaces
Implemented collections' save/restore state
Optimized "bulk add" for Lists, HashSets and SortedSets
Generate mementos for a collection's items
Used DynamicObject/reflection to allow collections of internal/private nested classes
Updated CollectionAnalyzer to allow collections of collections to be registered
Moved attributes to "MementoContainer" namespace
Updated TypeExtensions to return attributes instead of attributes' types
Added 'cascade' parameter to MementoCollection attribute
Avoid attribute duplicates on AttributesMap. Class attributes take precedence over interface attributes.