First set of refactoring change sto support tasks sync

A bunch of commits here:

1. Separate out the Contact wrapper into a separate file ol_contact.py
2. Add a number of new classes to ol_wrapper.py to make it easier
   for working on multiple message stores inside a single outlook profile
3. Initial support for tasks and notes. Make a generic folder clas
   which can be iterated on.

These chnages will not work as is with the rest of the code and sync.
however these are important chages, and we are able to run teh
ol_wrapper.py to open the Outlook default profile and read the
three message stores that I have installed on my test machine.
move bulk_clear_gcid_flag insdie MessageStore

Without any significant change to the code, it best fits in MessageStore
We will eventually want a version for all of Outlook. Should implement
one to iterate over all the stores and delete.
Cleanup some debug logs.
Contacts folder getting added twice to store.folder array

An interesting initiailzer behaviour in python - totally unexpected
for someone coming from C. A chain initializer was the culprit.
Changed it to a bunch of separate initialiers.
str() for MessageStore and Folder objects for debugging purposes.
Add support for named property tags specific to Tasks

Many key task properties are MAPI Named Properties. These tags need
special handling - similar to the SMTP email property for contacts.

This commit brings in the basic support to allow reading and writing
these basic task related properties from Outlook
helper routines in Folder class to test type and get underly mapi folder object
Helper routine to print key statistics and details for the default task folder
Make all contacts operations on default contats folder

Recall that in the beginning of time Gout had all the operations
being performned on the default contacts folder, and this behaviour
was hard coded. Then we have been working on putting in a generic
infra to explore and work on any type of folder - tasks included.

Now that the required infrastructure is in place, this fix puts back
the default behaviour of synching the default contacts folder.

So essentially we are where we began at the start this branch -
in absolute feature terms - but with the code flexibility to look
at any of the folders.
Debug routine to print all the entires in an Outlook folder as part of the dry run.
File format version 2 of the app state config

The biggest change we are working on now is to support more than 2
types of PIM databases. This requires some fundamental changes in
how we capture the app configuraiton preferences as well as how
the db sync status is tracked by the application.

The app_state.json.example file, as always, is well documented
and contains enough comments to make the file self-explanatory

A number of general improvements have also been implemented in state.py
whereby range checks are done for some fields, etc.
Minor edit: remove some commented out code form state.py
Move the fields.json content into app_state.json

Makes sense to localise all the config, including fields.json, in
a single place. Now the config file has a separate section where
we can have db-specific config parameters. Read the comments in
the example json to get more information on this.
Unit test for get_db_config and set_db_config
New PIMDB abstract base class and first rewrite of Outlook wrapper
Move the get_name and set_name methods into base Folder class.
PIMDB implementation for Google Contacts.

A number of minor mods necessiated to other files as collateral
changes. Nothing major enough to be documented.
Google Folder and Contact wrappers commit

With this commit the main derived classes GCContact and GCContactFolder are
defined, and useable to create and update contacts on the server. Even the
prep_gc_sync_lists() routine is working as it was before the rewrite.

This means that the Google Contacts side of things is about 75% ready for sync
stuff to be implemented.
Adding login.auth to ignored files - it contains my gmail credentials used during development.
New "enum" functionality and move the time stuff to ol files which needs them