Simpler implementation of Kaptan.get

This patch does the following:

- Split up the function accessing the dictionary and the function
handling errors. This way the first can be called by the second
and error handling is easier.

The new dictionary access function now uses a more straightforward approach. This makes it more readable than the previous; And allows the implementation of the new feature mentioned below.

- **New feature:** Allowing of nested indices and key access. This way a key similar to `option.0.address` is legal to use. Arbitrary nesting of these is supported.

**Note:** I added more `Exceptions` that can be raised when calling `Kaptan.get`. I'm not very fond of this idea and I think we might want to change this to just `KeyError`'s instead. I think it might be too complex for the simplicity that *kaptan* brings to the table.