Simplify numpy expression code

* Use a type trait instead of specialization
* Avoid a few copies by using references whenever possible
Rework ndarray implementation

No longer precompute subarrays as it implies some overhead. Now compute
it on the fly.

This leads to some good performance improvement and cleaner (?)
implementation.
Implementation of frexp

Although frexp is a ufunc, it cannot benefit easily from expression
templates, so define it as a regular function.
Fix -L flag support
Fix unittest according to recent py.test version

py.test try to get __name__ attribute for the test function. When
using a functor it does not exist.
Update Pythran interface

* ToolChain is fully stateless, then it has only static methods.
* ToolChain offers multiple entry points: compile a pythran code as
  a string, compile a cpp file, etc.
* Update the unittest according to the new interface
* Introduce a TestFromDir(TestEnv) class for the different test
  suites that are based on individual directory. More consistent
  behavior through code refactoring.
* Raise ToolChain.Compile error instead of CalledProcessError
* Exclude current directory from import when launching unit tests
  using setup.py
Portability: do not use distutils and link against libpython
Fix infinite recursion in mod(double, long)
Handle .cpp files on the command line
Clean Pythran Interface: code refactoring
Add a -v (verbose) option
Add support for "runas" in tests

The test file can contains a #runas directive. It may contains
multiple statements but the last one is the value to test:

 #runas a=1; b=3; myfun(a,b)
=> the return value of myfun is checked

 #runas a=myfun(); b=anotherfun(); a+b
=> the value of `a+b` is checked