Add support for offline updates via msfupdate

If using a binary installer, you may install an offline update with:
  msfupdate offline-update.bin
Use Getopt to parse options
Refactor msfupdate so it is testable
Test the old wait/nowait behavior
Always exit from maybe_wait_and_exit

Previously calling maybe_wait_and_exit wouldn't actually exit.  This was
the wrong behavior.
Validate arguments to msfupdate before updating
Clean up msfupdate help messages

Don't display options that aren't valid for the platform we are on
Allow stubbing stdin in msfupdate
Always use maybe_wait_and_exit in msfupdate

This allows error messages to be seen on windows where exit closes the
console.
Land #2598, offline updates and msfupdate refactor