moved master argument parsing to CreateSlaveOptions class

Moved the code that validates and parses 'buildbot create-slave'
master argument to runner.CreateSlaveOptions class.
slave cli: replaced Maker class with local functions

No point in creating a single instance of Maker class, we can as well
call some local functions.
catch IO errors when doing 'buildslave create-slave'

When creating buildslave directory with 'buildslave create-slave'
command, catch IO errors and print user friendly error messages.
added unit tests on buildslave.scripts.create_slave.createSlave()
added unit tests on buildslave.scripts.create_slave._makeBaseDir()
added unit tests on buildslave.scripts.create_slave._makeBuildbotTac()
changed indention to follow PEP8
buildslave.test.misc.OpenFileMixin: specify default errno

In methods that patches open() to simulate open, read and write errors
use default errno for the exception raised.
added unit tests on buildslave.scripts.create_slave._makeInfoFiles()
renamed buildslave.test.misc.OpenFileMixin class to FileIOMixin

The FileIOMixin class name is more descriptive, as the mixin now patches
more then just open() function
MercurialExtractor: set baserev in parseStatus (indentation error)
MercurialExtractor: correctly calculate GCA between working directory and upstream
MercurialExtractor: report hg errors
MercurialExtractor: fall back to working directory diff if no upstream is configured
Merge branch 'create-slave-cli' of git://github.com/elmirjagudin/buildbot
Merge branch 'mercurialextractor' of git://github.com/bcully/buildbot
Display multiple revs in Web UI for multiple codebase setups

Currently, the web UI only shows "multiple rev" when viewing Builder pages. This is entirely
unhelpful. This patch changes it so it will show the revisions (including codebase) wherever
possible.
 MultiRev: fix minor error in Jinja templates