Dev of analysis helpers

Sorry for the massive amount of changes; probably breaks some things so I can undo and handle them separately. You might want to pull this branch separately and test.

Added logging instead of print lines.

Removed global synapse login; each function should take a synapseclient.Synapse object (more flexibility)

Rewrote the query2df to handle different table types (entity, file, etc). Also, added option if passing a delimiter, merges values in a column instead of taking the first one.
There are actually way more types than this (most of them depricated):
{0:'dataset',1: 'layer',2: 'project',3: 'preview',4: 'folder',5: 'analysis',6: 'step',
 7: 'code',8: 'link',9: 'phenotypedata',10:'genotypedata',11:'expressiondata',12:'robject',
 13:'summary',14:'genomicdata',15:'page',16:'file',17:'table',18:'community'}

Since the return type is always type.annotation I have in other places moved to doing:
new_key = '.'.join(key.split('.')[1:])

which I think should work generically.