Add the array_select() function.

The array_select() function allows you to select the first non-empty value from an array.
Schema and Validation refactor and enhancements.

- Add support for nested object schemas.
- Add support for arrays of objects.
- Collect validation errors with a field’s path instead of just its name.
Add schema unit testing.
Add unit tests for array_select() and fill in some doc comments.
Remove an array functions test that is no longer an error.