Start separating Spec class
Start breaking Spec into multiple classes. Add PathSpec and StaticSpec.
Add GeneratorSpec. Add transform, rewrite extract and resolve methods. Return options prop.
Add ArraySpec and ObjectSpec, without resolve() yet
Fix options rewriting order
Rename input to source, source to sample. Return construct option
Add precheck and postcheck to Spec.resolve()
Add some tests for Spec empty, getOptions and extract methods