Generate component parsers

We'll check semantic nesting rules in the constructors instead of the parser.
Use _.contains
Handle incorrect closing delimeters
Warn the user about unsupported component types
Add Targets, Durations, and Restrictions