Update GitHub project URL in standalone build
Use `--disable-gems` in hub shebang if current Ruby supports it

Since hub doesn't have any gem dependencies, skipping RubyGems speeds up
execution.
Bake detailed version information into standalone executable

Sine some people will be building hub from a branch in git (typically
master) between releases, it will be useful for both them and me to know
which exact version they built from.

This makes it so that `hub version` will display detailed version info:
- the last tag
- number of commits since that tag
- the commit SHA at the time of the build

Example:

    $ rake hub
    $ ./hub version
    hub version 1.10.6-116-gd784af9
Have fakebin error messages go to stderr

Fixes silencing such errors in tests
Add test for standalone script that verifies it's valid Ruby

Execute the `hub version` command to confirm that the standalone script
doesn't have any syntax or load error, and that it can execute a simple
command that shells out to git.
Reimplement CGI and URI modules for loading speed

Simply requiring "cgi" takes ~4 ms, while "uri" can take ~18 ms on Ruby
2.0.0, because loading either module results in Ruby interpreter having
to parse a huge amount of code, most of which is not needed for our
purposes.

For instance, we only use `CGI.escape` and `CGI.unescape`, and this
change provides a small replacement module that loads fast.

This also provides a lightweight URI::HTTP replacement that's able to
parse simple URLs. For the purpose of representing URLs of git remote
and handling API communication, this should be enough.
Fix stubbing that CGI & URI modules are loaded in Ruby 2.0.0

Simply adding e.g. "uri.rb" to $LOADED_FEATURES ($") does the job in all
Rubies prior to 2.0.0. However, 2.0 will happily load "uri.rb" from
stdlib when a next `require "uri"` ocurrs, seemingly ignoring the state
of $".

I have NO IDEA how immediately trying to `require` works here, but it
does the job of preventing the actual load of "uri.rb" immediately and
in the future as well.
Speed up hub execution in cukes by skipping RubyGems
Speed up load time by avoiding loading YAML

Due to its sheer size, requiring YAML takes ~21 ms on Ruby 2.0.0. To
handle hub's very simple config format, we won't need most of YAML's
features, so we can afford to reimplement YAML just for the syntax we
need to support the existing config format.
Avoid loading FileUtils; reimplement `mkdir_p`

Loading FileUtils can take more than 10 ms on Ruby 2.0.0, making the
require extremely wasteful for the purpose of just using a single method.
Include head SHA in version info if tags are not available

When building hub from a git repository, the detailed version
information will get built into the executable courtesy of
`git describe --tags`. However, if tags are not available in the
git repo--for instance, in the case of Homebrew install from git--this
at least embeds the current SHA in version information.