Add ejaydj codes

Codes added from my gem: https://github.com/ejaypcanaria/ejaydj for review purpose only.
I did a bunch of reading about inheriting from Struct/OpenStruct. One thing that I found interesting is that, it will prevent your class from inheriting from other class (obviously).

What do you think of reusing `instantiate_variables_from` here to make it more tidy?