Code and tests for get() and has() to explicitly handle missing input.

Usually get() and has() are called with explicit inputs, but they can also be
called with a variable name, and that variable can unexpectly undefined or null,
as @robludwig found and submitted a patch for.

This pull request builds on his work by adding test coverage and also covering has()
as well as get().

@lorenwest: Note that for has() I have the code return *false* on missing input
instead of throwing an exception like get() does.

The value of `has()` is that it works differently that get() does, precisely so people
can avoid a try/catch block around get().

Since `has()` is largely for avoiding try/catch, it made sense to have it avoid
throwing exceptions.