RFC: Index fixes/updates

Here are a few fixes/updates to Index

* Fix `rename!` from Dictionary (fixes #442)
* Make `names!, rename!, and delete!` to return the updated `Index`, rather than the names in the index
* Added tests for the above

Other than the bug fix, these changes bring Indexes more in line with mainline julia, and make testing of the updated functions easier.

The bug fix goes farther than the simple fix and reimplements `rename!` to work with any iterable which produces pairs of values; all of the old functionality is still there.

This file still needs some TLC (formatting, testing, and signature updates), but that can come from future PRs.

Let me know if this looks okay for now.