Revert change to use Assembly.Load(Byte[])

Using Assembly.Load(Byte[]) created problems loading assemblies containing unmanaged code.
http://stackoverflow.com/questions/2945080/how-do-i-dynamically-load-raw-assemblies-that-contains-unmanaged-codebypassing

The change to use Assemble.Load(Byte[]) was originally made as a workaround to fix a problem where the Python.Runtime would get loaded multiple times when using nPython (once from the resource, and then later from the file on disk). The change forced it to go through the resolve mechanism, which found the embedded resource.

This change fixes the same problem much more simply, while using the normal Assembly.LoadFrom(path) method. Before attempting to load an assembly from disk it checks to see if an assembly with the same name is already loaded.