Implement named factories.

In the ruby implementation of FactoryGirl, factories are stored and
retrieved using arbitrary symbols as keys. The convention is to use the
unqualified type name in camel case (e.g. :user_profile) but it is also
possible to define alternate factories for the same type (e.g.
:guest_profile or :admin_profile).

While it makes sense to use types as keys in the (strongly typed) .NET
version, some situations do require several factories for a single type.

In order to solve this problem, the Define() and Build() methods have
been overriden to optionally allow an arbitrary factory name to be
passed in as a string. To accommodate these new methods, the hash table
used to store factories internally has been modified to use strings as
keys rather than types.

The original Define() and Build() methods have been changed to use fully
qualified type names as keys internally, so the original interface and
behavior is preserved.

However, it has (for obvious reasons) been necessary to change the type
of the DefinedFactories property from IEnumerable<Type> to
IEnumerable<String> but it is assumed that this enumerator has been
added mainly for testing purposes and that this (potentially breaking)
change is therefore of little consequence.