task/ta-npp-002-14 -- nparcel.Emailer() support for templates content

nparcel/daemonservice.py
* new method alert() to generate templates email notification
* new method create_table() takes a list of items and generates string
  based, variable table content

nparcel/emailer.py
* new method get_subject_line() which constructs an email subject line
  from a template
task/ta-npp-002-15 -- filterdaemon.py processing alerter hook

nparcel/daemonservice.py
* new attribute support_emails

nparcel/filter.py
* now inherits from nparcel.Service
* uses the nparcel.Service.alerts attribute

nparcel/filterdaemon.py
* load support email from config
* updated the _start() method to send out alerts notification emails

nparcel/loader.py
nparcel/service.py
* factor out alerts attribute to nparcel/service.py
task/ta-npp-002-16 -- factor out nparcel.Emailer() from
nparcel.LoaderDaemon()

nparcel/b2cconfig.py
* aggregator locations support lists

nparcel/daemonservice.py
* factor out the inbound directory list

nparcel/loaderdaemon.py
* patch the aggregate_file() method to to handle lists
* factored out nparcel.Emailer() object to nparcel.DaemonService()

nparcel/mapperdaemon.py
* attribute mods to provide layer of separation between
  nparcel.B2CConfig()
task/ta-npp-002-17 -- provide layer of separation
between nparcel.B2CConfig()

nparcel/mapperdaemon.py
* new attribute archive_string which maps to
  nparcel.B2CConfig.pe_in_file_archive_string
task/ta-npp-002-17 -- provide layer of separation
between nparcel.B2CConfig()

nparcel/mapperdaemon.py
* new attribute archive_string which maps to
  nparcel.B2CConfig.pe_in_file_archive_string
task/ta-npp-002-17 -- provide layer of separation
between nparcel.B2CConfig()

nparcel/mapperdaemon.py
* finalised complete separation between nparcel.B2CConfig()
task/ta-npp-002-18 -- provide layer of separation
between nparcel.B2CConfig()

nparcel/primaryelectdaemon.py
* finalised complete separation between nparcel.B2CConfig()
task/ta-npp-002-19 -- enhance nparcel.PrimaryElectDaemon()
testing to incorporate a non-dry process() run

nparcel/primaryelectdaemon.py
* new attribute "pe" which manages a nparcel.PrimaryElect() object