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
Two dashes cover it if hash key or range key names do not have dashes. If hash key or range key names do have dashes, we may call `_queryGlobalSecondaryIndex` even if the query is on primary key or LSI. However, that it's fine to aggressively fall back to `_queryGlobalSecondaryIndex `. That function essentially handles any queries, because it basically scans through all records. (right, @giannic?)

Essentially we need index metadata in table definition. It can be a separate fix.