GAE: Add links to mailing list and twitter handle
make sure that entry.name is truthy before checking values on it
Merge pull request #14 from jdodds/fix-gmail-nonetype

Make sure that entry.name is valid before dereferencing
Add iso-8859-1 to trial list; unlikely to add coverage, but wth...
Make ASynK installable in a central directory and have per-user config dirs

With this change, ASynK will try to use ~/.asynk/ as the configuration
directory to contain config.json and state.json. Also the logs and backups
directory will be stored here.

Note that this cannot be changed through a config.json variabel as this
directory itself is needed to locate config.json. The following
heuristic is used:

Asynk user directory is set to either ~/.asynk or the value of --user-dir
command line argument. If ~/.asynk/ is empty then the state.json and
config.json files are copied from the asynk application root directory.
This will help older users to transparently migrate their config and state
files to the new location without havign to do anything else.

Finally, made asynk.py executable so it can be executed directly.
BBDB Stores can be relative to user home dir

If the BBDB store id starts with ~, then expand it like one
would expect in a unix environment.
Store all the group memberships of google contacts

Previously only the "active" folder (i.e. the folder in the currently
processed sync profile) was saved and restored. This meant that any
contact which was marked as being in multiple google contact groups,
lost information about its other group membership. now this is fixed.
cleanup Asynk constructor to remove unwanted None value for config parameter
Two default profiles in state.init.json

- Have a default gc-ol and a gc-bb profile set up in the
  initial state json. Just setting th stage for a 'default'
  sync profile for newbies or first time users

- helper routines to enable the folder and store ids to be
  written to the state.json; so far we did not need this
  support
Set the default contacts folder to My Contacts during google contacts setup
Use sane defaults for store and folder ids if they are null in config

This is the final step needed to support a 'sane' sync option
with minimal configuration.

Basically, if a user has just fetched ASynK, the most likely common case
scenario will be to just sync his entire BBDB to the My Contacts folder
in Google Contacts, or defaults contacts folder in Outlook to Google.
With this commit that is possible.

The way this is enabeld is any gc sync profile without a folder id is
synhed to the My Contacts folder. If a store id is also missing a
google contacts username is prompted for, and stored in the default storeid
field. A similar "logical" thing is done with Outlook.
Move the unit test code from pimdb_gc.py to test/test_gc.py
Update test_state.py to work with recent changes to state/config jsons
Create a test/gold/ regression test suite - albeit with limited coverage for now
Doc and README updates for recent changes

- Mention the ~/.asynk/ directory stuff
- Mention the defaut sync profiles
Doc update for default profile run in the Recipes section.
First element of email list in BBDB will be treated as the primary address

Gmail has a flag to identify the primary email address. In Emacs,
bbdb sets the first email address for tab completion and for completing
using the mail-alias field etc. So preserving this semantics is good.
This is what we acheive with this commit - ensure that the first
email is treated as the primary address - while reading as well as
when writing out to the BBDB database.
new test_print_item in test_gc.py to print google contacts.
Stashing away code to track primary phone number

Similar to an earlier commit where we tracked the primary email
address and made it the first email in the BBDB list, we should be
tracking phone numbers as well. However the primary field for phone
numbers is not really set by Google properly (as best as I can see).

This diff is really an attempted patch which can come in handy if
and when we decide to explore this problem in more detail at some
point.
Updates to the project website related v0.3.0 releaes