Fix for System.IO.FileNotFoundException in NpgsqlFactory.GetService

Rewrote assembly and type resolving better.
Fixed the strategy how to approach Npgsql.EntityFrameworkLegacy.

If you request DbProviderServices, try to load tightly coupled Npgsql.EntityFrameworkLegacy first.

And then query NpgsqlServices.TargetProviderServices property.

We can know supported version of DbProviderServices by checking TargetProviderServices.

We provide NpgsqlServices.Instance if we share same version of EntityFramework library.
A bit more tweaking on legacy EF support

* Removed #ifdef ENTITIES, which doesn't exist anymore. We have just one Npgsql.dll.
* If the user requests legacy EF but didn't install the EntityFrameworkLegacy package/dll,
  they get an informative exception including the nested exception (is the DLL missing? corrupt?)
* If the required members inside Npgsql.EntityFramework.dll can't be found (e.g. Instance) throw
  an informative exception. This should never happen unless we mess up and release a bad DLL, but still.
* Did not understand what the TargetProviderServices property added, so removed for now