Use GSIs in FakeDynamo when the IndexName starts with 'gsi'.

Hello @x-ma, @giannic, @chaosgame, @sboora, 

Please review the following commits I made in branch 'jamie-gsi-with-table-hash-key-as-range-key'.

36fa3578e1fc79d1df69f9932ea67594d939f74d (2014-11-19 23:51:18 -0800)
Use GSIs in FakeDynamo when the IndexName starts with 'gsi'.

The existing FakeDynamo code doesn't make use of a GSI if the
range key of the GSI is the hash key of the table. This makes it
impossible to test queries against GSI where this is the case. As
a minimal addition, this patch explicitly uses the GSI path if
the indexName starts with 'gsi'.

R=@x-ma
R=@giannic
R=@chaosgame
R=@sboora
Since this is a public library, let's make this heuristic more general. `gsi` prefix is an internal convention.

The default name of GSI has two `-` *when a GSI has both hash key and range key*. If a GSI only has a hash key, its name has one `-`, but `hashKeyInKeyConditions` will be false, so `FakeDynamo` will still treat it as a GSI.