WIP Core client library and integration test framework.

@alainjobart @guoliang100 @sougou 
Includes -
* DatabaseContext as the primary entry point.
* Base classes that control routing and cursor creation.
* Sql builder constructs.
* Integration test framework.
* Simple end to end test for unsharded keyspace and table.
Next - 
* Examples and test for range-sharding.
* Failure/error cases.
* Examples with db operation decorators.

Thanks for the review Liang. I will incorporate these changes. If you have
more inputs, please feel free to share. I can fix forward.

On Mon, Dec 22, 2014 at 3:25 PM, Liang <notifications@github.com> wrote:
>
> In py/vtdb/db_object.py
> <https://github.com/youtube/vitess/pull/269#discussion-diff-22196826>:
>
> > +    Args:
> > +    vtgate_conn: connection to vtgate.
> > +    tablet_type: tablet type to connect to.
> > +    is_dml: Makes the cursor writable, enforces appropriate constraints.
> > +
> > +    Returns:
> > +    VTGateCursor for the query.
> > +    """
> > +    raise Unimplemented
> > +
> > +  @db_class_method
> > +  def select_by_columns(class_, cursor, where_column_value_pairs,
> > +                        columns_list = None,order_by=None, group_by=None,
> > +                        limit=None, **kwargs):
> > +    if columns_list is None:
> > +      columns_list = class_.columns_list
>
> Generally I feel it is good to have more checks so we do not have any
> unhandled exception originated from library code.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/youtube/vitess/pull/269/files#r22196826>.
>