adds getValues() and hasValue()

Additional changes:
- toBoolean() converts null and undefined to false
- length validations don't throw an exception when dealing with undefined or null