task/ta-npe-002 -- integrate new comms directory into configuration

nparcel/b2cconfig.py
* new attribute "comms" which directory where comms files are kept for
  further processing
* factor out the attributes out of the __init__() method

nparcel/conf/nparceld.conf
* placeholder for new config item "comms"

nparcel/primaryelect.py
nparcel/primaryelectdaemon.py
nparcel/reminder.py
task/ta-npe-002 -- prepare new comms.py module structure

doc/source/modules/comms.rst
nparcel/comms.py
nparcel/tests/test_comms.py
* new comms module structure

nparcel/reminder.py
* updated process() method to write comms to comms_dir
task/ta-npe-002-04 -- comms module can SMS

nparcel/comms.py
* factored out send_sms() and get_return_date() methods into
  nparcel/comm.py
task/ta-npe-002-05 -- comms module can email

nparcel/comms.py
nparcel/reminder.py
* factored out send_email() method into nparcel/comm.py
task/ta-npe-002-06 -- slurp comm files

nparcel/comms.py
* remove _create_dir method as it doesn't make sense at this level.
  If the
  comms directory does not exist then we simply don't process any files
* new method get_comms_files() which produces a list of files in the
  comms_dir attribute

nparcel/reminder.py
* clean up commented out sections
* refactor the comms_dir initialisation
task/ta-npe-002-07 -- send reminder.py comms

nparcel/comms.py
* new method process() which slurps communication files from comms_dir
  attribute and attempts to send comms via appropratie medium
* factored in the get_agent_details() method from nparcel/reminder.py
* new method parse_comm_filename() which extracts the job_item.id and
  template type from the comms filename

nparcel/reminder.py
* factored out the get_agent_details() method to nparcel/comms.py

nparcel/restsmser.py
* updated the create_comms() method so that it defaults to the newly
  named sms_body_xml.t template
task/ta-npe-002-08 -- factor out the proxy connection details from the
nparcel/remind.py and nparcel/primaryelect.py modules

nparcel/bin/npremind
* update the Reminder() object to not reference comms api

nparcel/primaryelect.py
nparcel/reminder.py
* PrimaryElect() object does not inherit from parcel.Reminder

nparcel/primaryelectdaemon.py
* update the PrimaryElect() object to not reference comms api
task/ta-npe-002-09 -- factor out the _create_dir() method into
nparcel/utils.py

nparcel/primaryelect.py
nparcel/reminder.py
* now use the nparcel/utils/files.py version of the create_dir()
  function
task/ta-npe-002-10 -- introduce new nparcel/service.py module which acts
as a base for the various B2C services such as loader, reminder and
primary elect

doc/source/modules/service.rst
nparcel/service.py
nparcel/tests/test_service.py
* new files

Makefile
doc/source/modules/index.rst
nparcel/__init__.py
nparcel/tests/__init__.py
* integration
task/ta-npe-002-11 -- factor out service level components from
nparcel/reminder.py and nparcel/primaryelect.py
task/ta-npe-002-12 -- primary elect comms

nparcel/primaryelect.py
* removed reference to comms "actions"

nparcel/reminder.py
* updated the process method to only record job_item.id on success

nparcel/templates/email_pe_html.t
* rephrase to make a bit more sense
task/ta-npe-002-13 -- nparcel/loader.py inherits from nparcel/service.py
task/ta-npe-002-14 -- factor out the comms facility from
nparcel/loader.py

nparcel/loader.py
* factored out the comms facility

nparcel/loaderdaemon.py
* updated the _start() method so that the Loader() initialisation
  includes the comms_dir argument
task/ta-npe-002-15 -- loader comms

nparcel/templates/email_body_html.t
nparcel/templates/sms_body_xml.t
* template updates to make interface consistent
task/ta-npe-002-16 -- split loader comms into separate email and SMS
components

nparcel/loader.py
* update process() method to call the flag_comms() method for both SMS
  and email

nparcel/service.py
* updated flag_comms method to capture comms action (either SMS or
  email)
task/ta-npe-002-17 -- incorporate new Service.flag_comms() facility within
nparcel/reminder.py and nparcel/primaryelect.py
task/ta-npe-002-18 -- adjust nparcel/comms.py to handle action-based
comms files

nparcel/comms.py
* updated the parse_comm_filename() method to handle and return
  communication
  action type ("sms" or "email")
* process() method now selectively send comms based on action
* process() method now removes comms files upon successful transfer and
  moves aside comms files that fail processing
* Quick fix to handle console-based logging ('<stdoout>' should be
  '<stdin>')

* Remove rollover facility from daemons as this has a tendency to
  clobber dated log files
task/ta-npe-002-  -- send support comms in messaging failure

nparcel/comms.py
* new helper methods _delete_file() and _move_file()
* updated get_comms_files() method to use regexs in filename check
* process() method now returns a list of comms files processed

nparcel/templates/email_html.t
* removed nparcel logo to align with new business rules
task/ta-npe-002-20 -- introduce comms daemonisation support

doc/source/modules/commsdaemon.rst
nparcel/commsdaemon.py
nparcel/tests/test_commsdaemon.py
* new files