Proposed improvements for extensibility

Some proposed changes for improving extensibility principally around discovery and code reuse. You can look at https://github.com/Redbolts/Rutt/tree/Discovery-extensions for example implementation.