Add Factset

- Factset contains a FactsetId and list of partitions
- Add more tests to PartitionSpec
@raronson @etorreborre Having said that if when we do the namespace change, it probably make sense for it to be NamespaceId or Name as it is possible (likely) at some point we may want that single namespace concept - I just don't think it adds anything to this change.