Generate variable names based on content

Generate variable names in new_const_cname() based on content of the variable
rather than using a counter straight away.
Implementing module name parsing with os.path.
slight code simplification
clean up and improve static type declarations in FlowControl.py a bit
declare some classes in FlowControl.py final to speed up internal method calls
minor tweak
disable incorrect optimisation for set.discard()
add some more typing in FlowControl.py
simple optimisation that statically maps keyword arguments to positional arguments when called signature is known
fix error test after enabling keyword arguments in simple C functions
fix compiler crash
fix error test after enabling keyword arguments in simple C functions
move major part of SimplifyCalls transform into type analysis in GeneralCallNode
fix safety coercion after call node optimisation
match simple keyword arguments that are passed into cdef function calls out-of-order
refactor analyse_types() and friends to work more like a transform by returning the node or a replacement
reimplement SimplifyCalls transform in-place in GeneralCallNode.analyse_types()
Fully initialize allocated memory.

__pyx_CyFunctionObject.defaults must be fully zeroed or a segfault or
memory corruption may occur if the object is visited by the garbage
collector before defaults is later populated. Uninitialized memory is
cast to PyObject* with undefined results:

  static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
  {
      ...
      if (m->defaults) {
          PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
          int i;
          for (i = 0; i < m->defaults_pyobjects; i++)
              Py_VISIT(pydefaults[i]);
                       ^^^^^^^^^^^^^
Merge pull request #183 from jrray/master

Fix runtime crash as described on cython-devel.
improve error reporting on mapped keyword arguments for C functions, implement out-of-order keywords and C method mapping