Updated for current Elixir, pushing other's improvements to original project


work by @bluemoon, @bdionne & @rgrinberg incorporated here to contribute back to original fork.