Fix and simplify parsing of floating point numbers

The previous algorithm was unable to parse numbers in scientific format
like 2.0e-3 and had a bug doubling the first digit after the decimal point.
Now simply use the intrintic python functions to parse int/float
Keep order of lua table when writing  with encode()

Substitute python dict() with odict which preserves order.
Anyways, this will reduce performance when the dict becomes large
Correctly detect derived types

If there was a derived type (e.g. numpy.float64 is derived from
float), it was not printed, although it would have been perfectly possible.
To detect the type better, use isinstance() instead of specific type
comparision
Merge remote-tracking branch 'remotes/the-nic/master'

Conflicts:
	slpp.py
Fix and simplify parsing of floating point numbers

The previous algorithm was unable to parse numbers in scientific format
like 2.0e-3 and had a bug doubling the first digit after the decimal point.
Now simply use the intrintic python functions to parse int/float
Keep order of lua table when writing  with encode()

Substitute python dict() with odict which preserves order.
Anyways, this will reduce performance when the dict becomes large
Correctly detect derived types

If there was a derived type (e.g. numpy.float64 is derived from
float), it was not printed, although it would have been perfectly possible.
To detect the type better, use isinstance() instead of specific type
comparision
Rebased the-nic work

Conflicts:
	slpp.py