task/ta25 -- DbSession insert to return row ID of last insert

dbsession.py
* new method insert() dedicated to INSERT type DML which returns the
  last row ID
Merge branch 'feature/us21' into dev
task/ta24 -- "job_item" table insert

table/jobitem.py
* fix type that referenced "job" table instead of "job_item"

table/tests/test_jobitem.py
* test to verify "job_item" insert
Merge branch 'feature/us21' into dev
task/ta26 -- insert job/job_item at loader level

dbsession.py
* incorporate Job() and JobItem() objects as the DbSession() layer

loader.py
* overhauled the process() method so that it now handles the Nparcel
  record creation
Merge branch 'feature/us21' into dev
task/ta27 -- loader identifies existing barcode

dbsession.py
* new convenience property "row" which returns a single record from
  cursor

loader.py
* new method barcode_exists() which verifies if a barcode already
  exists in the table
Merge branch 'feature/us21' into dev
task/ta28 -- loader process should identify existing barcode

loader.py
* updated process() method so that it identifies existing barcodes.
  This will eventually trigger the "job" table update
Merge branch 'feature/us21' into dev
task/ta19 -- incorporate Agent ID check

dbsession.py
* __init__() now has an _agent attribute which manages an
  nparcel.Agent() object
* create_test_table() method now creates a sample agent table

loader.py
* new method agent_exists() to verify if an Agent ID is defined
Merge branch 'feature/us21' into dev
task/ta29 -- integrate agent_id check into loader

loader.py
* modified the process() method to incorporate an Agent Id check.
Merge branch 'feature/us21' into dev