Convert most AnyObject to Generic <T>

In order to not lose type information many methods have been changed
to use generics instead of AnyObject.
Rework merge signature

Given dictionaries `dict`, `dict2` and `dict3` previously merge was
called via:
$.merge(dict, dictionaries: dict2, dict3)

With these changes merge becomes:
$.merge(dictionaries: dict, dict2, dict3)

and gains
$.merge(arrays: arr, arr2, arr3)
Merge pull request #31 from zolrath/merge-signature

Rework merge signature
Merge pull request #30 from zolrath/genericism

Convert most AnyObject to Generic <T>
Adding doc comments above each method
Merge pull request #33 from ankurp/docs-in-code

Adding doc comments above each method
Update README.md
Update README.md
Fix bug in initial and rest method
Re-implent indexOf and lastIndexOf
Merge pull request #34 from kiennt/feature/indexOf

Refactor indexOf and lastIndexOf
Merge pull request #29 from kiennt/master

Fix bug in `initial` and `rest` function. Dont use `array.filter` function