Adding dynamic redirects. Fix for #793

Fix for #793 

*Do not merge this yet!!!!*

This change removes all static binding redirects in app.config, and introduces dynamic redirects in core. The way this is done is by listening to the AssemblyResolve event on the AppDomain, and loading / returning the assembly to redirect to. It turns out using this technique you can swap on the fly and give a different assembly than what was requested.

At startup, it builds a map in map in memory based on the assemblies that scriptcs ships with ensuring that any requests for the same names will be redirected to it's version. It also ensures that any packages in the scriptcs packages folder take precedence over what the script pack / packages assemblies were actually compiled against.

Assembly black magic at its finest....

It appears to work so far :-)

This does not fix the Service Stack script pack issue, as there appears to be no magical fix for that other than updating the script pack. However, I was able to get the old Web Api script pack to work with the latest Web Api (see comments)


Although this is probably already catering for most scenarios snice we preseed the dictionary from hostbin and current dir, I wonder if we could make it a bit smarter so that if assembly resolution fails but we already have a version of the assembly loaded in the current AppDomain, it grabs that currently loaded version, adds it to the dictionary and returns it.

Additionally, this could also simplify initialisation of `AppDomainAssemblyResolver`. E.g. we pre-seed it only with the assemblies in the scriptcs.exe folder and then for all others that are loaded by scripts, script packs and modules, we just use 'first in wins'. This would make it easier to lift the creation (and disposal) of `AppDomainAssemblyResolver` out into `Program` since the initialisation would not require an `IAssemblyResolve` or `IFileSystem`. It could just use the real filesystem to grab the assembles from the scriptcs.exe folder.