Revert "Revert "Merge branch 'migrator' of git://github.com/scriptjunkie/metasploit-framework into scriptjunkie-migrator""

This reverts commit 2436ac3a583bdb82944799698a10b6678890bd37.
Re-use block_api code in migrate stub if possible

Makes payload significantly smaller.
Fix error calculating payload sizes.

Error meant most Windows payloads were marked as incompatible with many exploits.
Add X64 PrependMigrate support
tidy EOL spaces
Fix issue with singles.

Single now plays more nicely with other mixins, so PrependMigrate works.
Ensure Windows single payloads use payload backend

This means the singles that define their own assembly will use the payload backend to generate it.
Ensure shell still works if PrependMigrateProc fails to launch.

Don't rely on GetStartupInfoA return value.
Move PrependMigrate to a mixin
Ensure prepend_migrate? always functions correctly.
Make asm spacing easier to read

Also adds a #prepends callback to Payload::Windows to make it a little
clearer what's happening.
Unstupid the prepends callback

Windows#prepends was overriding PrependMigrate#prepends
Move prependmigrate.rb for naming consistency
Make #prepends() actually work
Merge pull request #3 from jlee-r7/scriptjunkie-migrator

Proposed changes for PrependMigrate
Use EXITFUNC if present to save space and be more correct.

Jump straight to payload on process failure to save space.
Merge branch 'master' of github.com:rapid7/metasploit-framework into rapid7