api.py: Corrects output of repos

Due to repos coming in as a binary string, it needed to be converted
to a normal string before joining it in the debug message or it will
cause runtime failures. Due to 2to3 overlooking the print statement
on line 513, this has also been corrected along with a check to see if
the repos variable is an instance of type str instead of type basestring
which is no longer available in py3.
config.py: Adds py3 compatibility for ConfigParser
makeconf.py: Implements cmp_to_key on prio_sort

To ensure py2/py3 compat, the cmp_to_key function has been used to
the convert the variable prio_sort to a key instead of a comparison
like py3 returns prio_sort to be.
output.py: Adds file output compatibility

In order to allow users to set the output for error and normal
output we need to check to see if users have set the output to be
of type file. In py2 this is specified by the variable "file",
however in py3 this is specified by io.IOBase which encompasses
all file types such as Raw, Text, and Buffered files.
utils.py: Adds str type checking for path_elements
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.
remotedb.py, tar.py: Implements ssl-fetch code

Migrate to using ssl-fetch (urllib3 based) for downloading files.
dbbase.py: Fixes implicit tuple unpacking

A temporary variable is assigned to fix the lack of implicit tuple
unpacking in py3.
argsparser.py: Alphabetizes group arguments
reposconf.py: Creates initial ConfigHandler class

A class which add support for repos.conf portage configurations
is being added.
reposconf.py: adds read() function

To read the ConfigParser file in /etc/repos.conf/layman.conf
the read(), and _read_file() functions have been added.
reposconf.py: adds write() function
reposconf.py: adds add() function
reposconf.py: adds delete() function
reposconf.py: adds update() function
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.
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 initial RepoConfManager class

This class will provide a wrapper for all config types and will
also allow for custom config plugins as well.
repoconfmanager.py: adds conf_type checks

Checks are made to assure conf_types exists and is in the correct
format that RepoConfManager expects it to be.
repoconfmanager.py: adds add() function

By checking the conf_types and associating them with a dict has each
key as the conf_type and the value is a tuple of the corresponding
class and string of the module name.