Add ejaydj codes

Codes added from my gem: https://github.com/ejaypcanaria/ejaydj for review purpose only.
Wondering if inheriting from `Struct` gives you the ability for named parameters? I want the user of this class to specify each parameter name explicitly e.g. Track.new(name: 'Name')

If `Struct` doesn't support that, the tidiness here is a tradeoff I'm willing to accept since this is just on 1 file. There might be more than one instantiator of this class that might suffer from fixed parameters ordering e.g Track.new 'Name', 'Artist'.