Allow many assemblies to contribute IMigrations in the same migrations run

See: https://github.com/schambers/fluentmigrator/issues/463 for the original issue that I created.

In short: not all of our migrations are in the same assembly. This is deliberate as our application is very modular in nature and a module is able to define its own (very specific to its need) tables and other database objects, so migrations are present in several assemblies. Currently, it's only possible to do this through iterating through all your migration assemblies and creating a separate runner for each one, which doesn't necessarily run the migrations in the correct order.

I've made a change that preserves current functionality (you can still pass in a single `Assembly` instance to the runner) but adds the ability to also provide a `IAssemblyCollection` instance. The current overloads that accept a `Assembly` parameter default to creating a implementation of `IAssemblyCollection`, namely `SingleAssembly`. 

I've tried to keep breaking changes to a minimum, but to preserve sensical naming I've had to rename properties that are part of the public API to "Assemblies" instead of "Assembly".