New Validator and spec tests for 12 different types of errors with options

1. One of the new options attributes is spelled wrong
2. Certain options cannot be listed together under one descriptor
3.  When a list is specified for an option, and a hash is used instead
4. When a hash is specified for an option, and a list (array) is used instead
5. When a value under a hash option is empty
6. When a href option has the incorrect number of '#' characters in the value
7. When the href option does not point to a valid resource (in the current file) on the LHS of the '#' character
8. When the href option does not point to a valid descriptor (in the current file) on the RHS of the '#' character
9. When external_list or external_hash options point to a protocol not specified (only http currently)
10.  When external_list or external_hash options do not have a value_attribute_name sub-option
11. When external_list or external_hash options value_attribute_name or text_attribute_name sub-options do not 
       have a value
12. When a option source attribute is not a string or the value is not filled in