A few definitions fixes

* Use an object to represent a reference (were using a bunch of tuples)
* Capture definition regardless of if they are explicitly excluded
* Do not create a new definition reference for pluralized definitions
* Subpart scoping, where subparts can be configured in the settings -- ideally we will parse these out somehow in the future.