Support Top-Level Enums

This is a re-opening of https://github.com/protobuf-ruby/beefcake/pull/23 with supplemental changes after discovering generated class anomalies due to behavior that was introduced after @kim's pull request.