Another attempt at fixing literal equality, hash and comparison handling.
Here lexical representations and values are kept separately, but all comparisons happen in value space.

This is keeping the existing rdflib behaviour for literal > < comparisons, here everything is compared based on the value. This means we can do some neat things:

* Compare literals with python objects, i.e. Literal(1)<2
* Compare literals without regard to datatype: Literal(1)<Literal(2.0)

BUT

This means we more completely ignore http://www.w3.org/TR/rdf-concepts/#section-Literal-Equality
Which is quite clear that data-type and lang must match for equality.

Now, to make __eq__, __gt__ and __hash__ consistent this must be true:

>>> Literal('1', datatype=XSD.integer) == Literal('1.0', datatype=XSD.float)
True

Which is probably not what we want.

I belive the neat comparisons will have to go...
1st of changes for RDF 1.1, before starting the email discussion
Merge branch 'master' of https://github.com/RDFLib/rdflib
old changes
merge with master
reworking literal __eq__ and added eq, rich comparison methods are still random
moved default eq method to Node
merge-master
merge master
fix broken merge
Merge branch 'master' of https://github.com/RDFLib/rdflib into rdf11
Merge from pull of main default repos
Add travis-ci branch build instruction
Reformat code to PEP8, add py3-compatibility switches, add branch build to Travis-CI constellation.
Docs updates
merge from master
Merge branch 'master' of ../rdflib into rdf11
Small fixes and cleanup
Unskip RDF1.1 test failures, for info.
added neq methods