Better Extensions API

This update will make the roots extensions API cleaner and more efficient. It will include a large update to how extensions can scope to categories, better error handling for mistakes in extensions, test coverage for any and every edge case I can come up with, and a thorough update to the extensions api documentation.