Re-enable access to protected functions

This change enables the ability to emit protected signals. This is a
little controversial, because it makes protected methods public.

Features the infamous ugly C++ hack: #define protected public