Working on macro-like definitions for Presenter

By using a macro to define a presenters base methods, we expose:

1) What are the expected methods of a presenter
2) Ensure that objects that are presented are wrapped accordingly

By stating in the presenter class what the methods are, we can create
Linters that validate each presenter.

By ensuring that objects are properly wrapped, we in turn don't have
to worry about exposing more of the object than we want.