Create WrapperInterface and AdapterWrapper, refs #413

By creating an abstract wrapper class, we can reduce amount of duplication
between ProxyAdapter and TablePrefixAdapter, while providing a more consistent
interface for future development of additional wrappers.

- Add missing setOptions/getOptions to AdapterInterface
- use AdapterWrapper for TablePrefixAdapter
- use AdapterWrapper for ProxyAdapter
- update ProxyAdapter and TablePrefixAdapter usage in Environment
These were defined in `PdoAdapter` but not in `AdapterInterface`. Since they are critical to `TablePrefixAdapter`, I figured they should be added to the interface.