Add spec for elf mips* and exe-only formats

Also a rudimentary test for win32_rwx_exec
Clean up exe spec a bit
Add more supported formats to exe generation

- Already supported, just added calls to the the right methods in
  the .to_executable_fmt method:
  - Linux armle, mipsle, and mipsbe
  - Mac arm, ppc

- makes the two (!?) copies of block_api for windows match more closely
  with the source used elsewhere. This is still needs to be refactored
  to get rid of the duplication.

- Get rid of some of the logic in msfvenom duplicated from Util::EXE
Refactor msfvenom into a class

Also adds some minimal testing... which is super slow because it doesn't
cache the framework object across tests.

Conflicts:
	msfvenom

Hopefully picked up all the relevant fixes from #2027
More msfvenom refactoring

* Make @framework into a caching method instead

* Allow instantiating with streams for where payloads and comments
  should go. This allows us to capture std{out,err} when running specs

* Specs are still woefully under-representative

* Get rid of all the calls to exit
Add spec for #dump_nops
Pull out common stuff in Util::EXE/MsfVenom tests
Add a couple more tests
Make sure linux payloads produce /bin/sh
Make comment a little clearer
Don't stack trace on failed option validation

See #2027
Don't continue if opts told us not to generate

Such as is the case with running with --options
Reorganize spec a bit
Refactor spec and add more docs
Abstract the dumper tests
Changed my mind, this goes here
Derp, wrong method name
Merge datastore opts before listing
Add spec for case-insensitive options

See #2027
Maybe fix travis? Works on my box