WIP merge.feature: Rework pull-request merges for the merge-button

I'm not sure if the second (private) merge is supposed to succeed or
not.  I'm also not sure if `hub merge …pull/…` should update the local
branch to reflect the changes (making it more like `git merge`) or if
the user should do that with a traditional Git fetch/merge (making it
more like the GitHub Merge Button).
github_api.rb: Add PUT support

Parameter processing should be shared between POST and PUT.
github_api.rb: Add GitHub Merge Button (TM) support
commands.rb: Add a 'merge-button' command

This may be sufficiently different from Git's 'merge' command to
deserve its own name.
commands.rb: Teach merge-button the '-m COMMIT_MESSAGE' option
commands.rb: Teach merge-button the '-i PULL_ID' option

I also make the successful-merge message more explicit
($owner/$repo#$pull_id), now that the source project may be
auto-detected.
Document the 'merge-button' command
commands.rb: Extend 'display_api_exception' to print error messages

So you can see what GitHub is complaining about.  For example,

  $ hub merge-button https://github.com/defunkt/hub/pull/9999999999
  Error pushing merge button: Not Found (HTTP 404)
  #<Net::HTTPNotFound:0x7f4cf845c670>
  {"message":"Not Found"}

This was useful for debugging, when I originally thought that the
whole PUT body was optional if you didn't want to specify
'commit_message'.  In that case, I got:

  $ hub merge-button https://github.com/wking/email-issue-reply-testing/pull/2
  Error pushing merge button: Bad Request (HTTP 400)
  #<Net::HTTPBadRequest:0x7f944f75a450>
  {"message":"Body should be a JSON Hash"}

Which is a lot more helpful than just "Bad Request".  It would be nice
if the 'Net::HTTP*' object hash was not printed, but I lack sufficient
Ruby-foo to know how to do that.