cli.py: Adds byte array support

When checking the selection of which servers to sync/add there is
a check to see if 'ALL' is specified. In py2 with argparser this
works, but with py3 and argparser, this doesn't work because the
'ALL' string will come in as a bytearray. This commit fixes that
by checking the python version and assigning a varaible to be checked
instead of a simple string like 'ALL'. It will now come in as either
'ALL' or b'ALL', py version dependent. A small fix is also made to
docstring to make the print function py3 compatibile.
output.py: Adds level arg for error(), for consistency
remotedb.py, tar.py: Implements ssl-fetch code

Migrate to using ssl-fetch (urllib3 based) for downloading files.
argsparser.py: Migrates from optparse to argparse

Also alphabetizes group arguments
reposconf.py: Creates ConfigHandler class

A class which adds support for repos.conf portage configurations
is being added.
makeconf.py: changes name to ConfigHandler, adds update() stub

For compatibility with RepoConfManager, the MakeConf class has been
renamed to ConfigHandler as well as adding an update() function as
a stub for when RepoConfManager calls it. Changes have also been made
to the error output, to allow for later translations.
config.py: Adds auto_sync, conf_type, and require_repoconfig

Three new options have been added to give users repo config
configurability.
repoconfmanager.py: Creates RepoConfManager class

This class will provide a wrapper for all config types and will
also allow for custom config plugins as well.
db.py: Incorporates RepoConfManager class
config.py: Adds proxies() function

Since both remotedb.py and tar.py both made use of the same code
that determined available proxies, the code has been moved to a
function in config.py and both files have been changed to make use
of this function.
utils.py: adds verify_overlay_src() function

api.py: incorporates the verify_overlay_src() function
api.py: Adds overlay type checking

Checks have been added to determine whether or not to readd a repo
if the overlay type reported from the remotedb is different from the
overlay type reported by the local db.
overlay.py: adds update() function

To update local database and overlay source urls, this function
has been created to allow the overlay.type functions to update
their source urls in their own methods.

source.py: Adds a stub update() function for overlay types
that don't have their own update() function.
git.py: adds update() function

Moves the fix_git_source() function to allow both add() and update()
to make use of it. While the update() function calls git remote
set-url, replacing the old url with the new url provided by
overlay.update().
db.py: adds update() function
api.py: incorporates db.update() in api.sync()
svn.py: Adds update() function

Adds _fix_svn_source() function to correct the source url in
order to run the svn switch --relocate command.
api.py: fixes success assignment in delete_repos()
api.py: fixes byte string output for update_news()
{argsparser, cli}.py: adds --readd cli option