Gh403 fix fetchindex

The FetchIndex code was broken in a couple places, and once I started
trying to fix it I just felt maybe there was a different approach.

This solution violates DRY in a couple places because of #@%($
type erasure, but in the end I think it provides a much better
user experience by returning concrete types
for everything. The user doesn't have to muck with generics or play
the "what type does this return" game .

The ITests show this but a 2i query now looks like:

```java
BinIndexQuery biq  =
    new BinIndexQuery.Builder(loc, "test_index", "index_test_index_key0", "index_test_index_key9")
                .withKeyAndIndex(true)
                .build();
BinIndexQuery.Response iResp = client.execute(biq);
```

I've also gone ahead and added `BigInteger` support for `_int` queries in Core and in the user API as well an the `@RiakIndex` annotation.

The last commit exposes the timeout parameter to the core and user API.

Fixes #403 
Resolves #402 
Resolves #405