major changes -
1) Individuals - thread data context through provided types to honour different connection strings at runtime
2) Connection cache now caches ISqlProvider instances via the type provider type name only - no connection strings.
3) Entities now remember their connection string (hidden from intellisense).  This is important because for further queries  from the entity, we need to understand which connection string was used when originally creating it as there may be several data contexts for the same type provider hanging around
4) Big connection lifecycle cleanup - connections are now used and then closed immediately both in design-time and runtime
5) Changed link data in the SqlQuery from a map to a list - multiple explicit joins were not working properly because the order in the query was not being preserved
6) removed static lookups in MSAccess as they were causing the design-time code to bomb sometimes (we can maybe revisit a similar optimization for all providers using concurrent dictionaries in the future)