Literal reworking

I have implemented the changes that me and Joern discussed previously and presented in #196 (https://github.com/RDFLib/rdflib/issues/196#issuecomment-10733279)

The status is well described in the doc-string for the Literal class: 

https://github.com/RDFLib/rdflib/blob/literal_reworking/rdflib/term.py#L398

and for __gt__ 

https://github.com/RDFLib/rdflib/blob/literal_reworking/rdflib/term.py#L689

The highlights: 
* Literal __eq__ and __hash__ are done in lexical space. 
* Literal lexical forms are preserved if the NORMALIZE_LITERALS flag is set to False. 
* but if the NORMALIZE_LITERALS flag is set to True, __eq__, __hash__ will effectively work in value space for the given datatype. 

* A new method .eq is available for all RDFLib Nodes, this does semantic equivalence, i.e. comparisons in value space for literals. This follows SPARQL rules for the = operator. 

* The rich comparison methods __gt__, etc. also follow collation rules as set down by SPARQL. The greater/lesser OR equal methods use eq (not __eq__)

* The old equivalence between basic python types and literals are GONE, if you really need this, use literal.value 

Of course this branch still passes all tests. I would hope that few people relied on the python-type/literal comparisons before, and hopefully these changes should not break much in any project using rdflib. 

Also, with this branch, the rdflib-literalfix branch of rdflib-sparql passes all the sparql11 tests regarding literal handling. 

I think this is a principles and even slightly sensible solution. If I do not hear/see any very good objections I will merge into master in the next few days.