task/us85-ta40 -- xlsx to csv converter

nparcel/conf/nparceld.conf
nparcel/b2cconfig.py
* new attribute adp_dirs that defines the ADP bulk load inbound
  directory
* new attribute file_formats under the [adp] section that is a list of
  filters to apply against ADP bulk load files

nparcel/ondeliverydaemon.py
* refactored the get_files() method by removing the redundant
  validate_file() method

nparcel/adpdaemon.py
* new support for new attribute adp_in_dirs
* _start() method support for inline file processing
* new attribute adp_file_formats that can filter out
  special types of ADP bulk load files
* new method get_files() that looks for ADP files in inbound directory

nparcel/utils/files.py
* new function xlsx_to_csv_converter()
task/us85-ta45 -- ADP flat file parser daemoniser module structure -
functional

nparcel/adpdaemon.py
* new AdpDaemon facility with _start() method stub
Merge branch 'task/us85-ta40' into feature/us-85

Conflicts:
	nparcel/adpdaemon.py
	nparcel/tests/test_adpdaemon.py
task/us85-ta43 -- ADP agent table insert SQL if the code has not
already been defined

nparcel/b2cconfig.py
nparcel/conf/nparceld.conf
* new attribute code_header that is a special ADP bulk insert header
  name that relates to the agent.code column

nparcel/adp.py
* introduce the Adp() class infrastructure
* new attribute "headers" which is a dictionary of  agent  table
  column keys and corresponding ADP bulk insert file header values
* new method process() that parses an ADP bulk insert file and
  attempts to load the items into the agent table
* new method extract_values() takes the raw values presented by a row
  in the ADP bulk update file and extracts the required values as per
  the values in the headers attribute
* update the process() method to check agent table against code before
  attempting an insert