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...
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
added neq methods
doc update - get rid of 2.4 work-arounds
merged from master
pep8ing
fix inverse logic in literal.__nonzero__
made literal.value a read-only property
property function for bi-directional python object <->literal lexical form bindings. Fixes #14.
neq = not eq - and fixed up equality corner-cases
remove literal normalisation from n3 parser - leave it to the literal class;
fix normalisation flag handling
Literal comparison changes. eq/__eq__ are in good shape. __gt__ not so much.
fixed up comparisons - now they are sane