Allow Custom Extended Configuration and Version Classes to be used 

These commits solve two issues I am faced with:

1. There is no way use a custom or extended Configuration class with the migration commands.
 - Based on the file name extension you only get the choice of:
    1. XmlConfiguration
    2. YamlConfiguration
    3. Configuration
 - (One work around is to use you own command and then use your custom configuration class)

2. There is no way to use a custom Version class
 - This would allow you to use your own code to mark a migration up or down.
 - However the Configuration base class is hard coded to use the Version class, and I can not overwrite because it uses private variables.

To solve the above issues I have made the following changes:
1. You can use a helper class, if defined, you can have a function to return your Configuration class instance.
2. You can override a new function in the configuration class to return your Version class instance.

Here is a simple example of what is possible with those changes:
https://gist.github.com/JeffPeters/7535348
This allows me to record when a migration was executed, but more options are possible.

I believe these changes would be useful to others.  Please like me know if you agree, and what changes I need to make to let have them ready to be merged in.