Export MAD-X library version
Rename madx_version => madx_release
Add property Madx.version
Fix typo
Update name version_date_mod => version_date

The name was changed in MAD-X r4893.
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__.
Purify cern.cpymad package

- no implicit submodule imports

- no mixed namespace of submodules vs. other objects (prevent name
  clashes, as in #57)

- the old API is retained in the cern.cpymad.api submodule
Fix broken test

Since elements are now dict's, this prevents arbitrary attribute
assignment.
Fix broken test
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/
Add model.Factory to simplify Model instanciation

This class is meant to become the canonical way to instanciate model
objects.
Remove name-based Model constructors

In favor of model.Factory based approach.
Remove cpymad.service module

The CpymadService served both as factory and instance manager. The
latter should be the responsibility of user code, IMO, which is the
reason to replace this by model.Factory which has only one purpose.
Move all model constructor logic to Factory

In order to make all Model dependencies injectable, yet hide the concret
set of parameters required by the Model.__init__ function from the user,
it should never be called directly. The instanciation is now completely
controlled by the factory (which can more easily be customized than the
__init__ function, if desired).
Merge pull request #88 from coldfix/plain-dict

Use plain `dict`s for tables/elements
Merge pull request #89 from coldfix/pure-package

Purify cern.cpymad package
Merge pull request #90 from coldfix/refine-model-creation

Replace CpymadService by a simpler model Factory
Merge branch 'master' into cpymad-1.0