Initial commit of large profile validation refactor
+ Added classes: Profile, ProfileRule, ProhibitedRule,
  AllowedValuesRule, AllowedImplsRule.
+ Moved most schematron creation code outside of
  STIXProfileValidator class
+ Refactored output Schematron
  - Prohibited elements do not get their own rule context.
  - Prohibited elements are contained under their primary
    container context (just as prohibited attributes always
    were written).
+ Needs a lot of documentation.
Changed variable name
Refactored ProfileRule.
+ Made _BaseProfileRule abstract class (not really ABC).
+ Made RequiredRule impl of _BaseProfileRule.
+ Made existing ProfileRule derivations extend _BaseProfileRule.
Replaced dictionary with namedtuple
Add documentation
Added docstrings to new profile constructs
Use .is_attr
Changed exception error message to include information about the context and field name of the profile rule.
Use @contextmanager with _parse_profile()
Added more error checking handling to profile validation code and stix_validator script
Added docstrings. Some code cleanup
Cleaned up docstrings