Adding support for service factories in IServiceDescriptor

Fixes #64
My primary complaint about having this is that there's nothing in the interface contract that enforces a relationship between the enum value and the property being not null. An extension method might be preferable since the pattern is going to be the same across all implementations of the interface. That said, this list isn't going to continue growing - picking one out of 3 null valued items, isn't particularly ugly to read. Let me know if you think otherwise