Rework None implementation

Previous implementation had typing information spread over several files
(bad locality) and did not handle using member function on the none
type.
Add missing const qualifier for string::operator==
Use a CFG analysis to insert Return None in the missing places

* This fixes Issue #77
* The CFG does not take into account interprocedural exceptions
Make test_random more robust

Increase the number of sampling when testing random generator
implementation, to avoid false negative.

Execution time is still reasonable compared to compile time ;-)
Workaround clang++ list constructor bad disambiguification

clang++ is not capable of resolving against the right constructor for

    core::list<empty_list>({ proxy::list{}() })

so help it a little.