List.replace_at

This is motivated by the comment from [here](https://groups.google.com/forum/?fromgroups#!topic/elixir-lang-talk/b4bcdTI1fpA).

I added replace_at to the List module. Even such seemingly simple intervention raised some questions:
  1. Should an exception be raised if a target position is out of bounds? Currently, the unmodified list is returned. 
  2. I used `List.insert_at` as a role model. By doing this I have noticed that it (and by extension `List.replace_at`) is not tail recursive. I don't know if this is accidental or by design.
  3. I noticed and fixed a typo in doc for insert_at :-)