ligd: Add float scalar values and make RType extensible

If RType is extensible we can implement custom sub-types of RType for
new types while still not breaking code that only pattern matches against
direct subclasses of Rep.

This makes LIGD extensible in Scala, whereas it is not extensible in
Haskell.
ligd: Add a small rType factory that implicitly determines the Rep

This makes things easier. Also get rid of needing to write EP() in
there.
Add a company test for ligd
ligd: Add an equals() to RType to match Scala case classes