Feature - support multi enums

I just implement the multi-enums feature, the use case is like @bbtfr mentioned in issue #86. The difference is that I use additional accessors to handle this feature and keep the Enum not changed. Please reference README and commit logs for more details.

Any discussions and suggestions are welcome.