Serve plain `dict`s instead of `LookupDict`s

Effects:

This turns summary, frozen tables and elements into `dict`s. Unfrozen
tables stay proxy objects for performance reasons, but their interface
will be adapted to be more `dict`-like.

There is no more builtin case-normalization, i.e. you have to use
lower-case keys in the user-code.

Rationale:

The pythonic type for key->value mappings is `dict`. Every python
programmer already knows how to use it without learning extra API.
Further, It is well understood and free of unforseen side-effects.

Case-normalization is replaced by requiring lower-case keys as explicit
part of the API. This is easier on the implementation side and not much
effort on the user side.
Revert "Allow multi-index access in TableColumns"

This reverts commit f40b97534886684a0f9f9c1739a23ccbd10fcf7b.

Aiming back for a more `dict`-like interface.
Make table proxy objects `Mapping`s (dict-like)

The collections.Mapping base class provides mixin methods keys(),
values(), items(), etc based on __iter__, __getitem__, __len__.
Fix broken test

Since elements are now dict's, this prevents arbitrary attribute
assignment.
Enforce lower-case keys for elements/summary

NOTE: the case for the table column keys cannot be normalized similarly,
as we need to pass the keys in its original case to the get_table_column
function.

For now, we just rely on MAD-X storing everything in lower-case
internally. If in the future, this turns out to be invalid, I see two
possible solutions:

- avoid proxy objects altogether (meaning get_table_column call time
  can always be made coinciding with the key normalization time)

- use a mapping [lower case -> original case] as is done in pydicti_ to
  recover the correct key case

.. _pydicti: https://pypi.python.org/pypi/pydicti/
Merge pull request #88 from coldfix/plain-dict

Use plain `dict`s for tables/elements