Change to make Namespace#get a generic method

I have modified the `get` method in `Namespace` to be generic. This reduces the amount of explicit casting you need to perform when fetching arguments, for example:

    // before
    LocalDate date = (LocalDate) namespace.get("date"); 

    // after
    LocalDate date = namespace.get("date");

Also, I have updated the other utility methods in `Namespace` (e.g. `getString` etc...) to use this new method.

I considered the possibility of removing the utility methods as the new `get` can be used instead, however, I appreciate that this would have a large impact on the user-base so have not made these changes - it may be worth keeping this change in mind though.

I reviewed the documentation and couldn't see anything that needed updating. Please let me know if I have missed anything, I'll happily add to the pull-request.