Changed LinearCode into a new-style parent.
implement _an_element_ for LinearCode

Implementing this makes LinearCode.cartesian_product() work nicer
and in particular, LinearCode.an_element() also starts working
Implement LinearCode.cardinality()
implement LinearCode.zero()

This makes both .zero_element() and .sum() start working
Fixed LinearCode a facade parent and so that it passes the test suite.
Merge branch 'public/categories/new_parent_linear_codes-16644' of trac.sagemath.org:sage into public/categories/new_parent_lienar_codes-16644
Added back in cardinality and made __len__ an alias.
Import cleanup of linear_code.py.
Trac #16644: LinearCode.cardinality category breakage

{{{
sage: C = codes.HammingCode(3, GF(2))
sage: C.cardinality()
------------------------------------------------------------------------
---
AttributeError                            Traceback (most recent call
last)
<ipython-input-2-2e23aafacb95> in <module>()
----> 1 C.cardinality()

/home/release/Sage/local/lib/python2.7/site-
packages/sage/structure/parent.so in
sage.structure.parent.Parent.__getattr__
(build/cythonized/sage/structure/parent.c:7211)()

AttributeError: 'LinearCode' object has no attribute 'cardinality'
sage: 'cardinality' in dir(C)
True
sage: hasattr(C, 'cardinality')
False
}}}

URL: http://trac.sagemath.org/16644
Reported by: ppurka
Ticket author(s): Travis Scrimshaw, Punarbasu Purkayastha
Reviewer(s): Nathann Cohen, Punarbasu Purkayastha, Travis Scrimshaw