Add support for decimal numbers [funcparserlib]

Now a number is composed of a series of digits, potentially followed by
a decimal point and another series of digits. The decimal_part parser
uses the `maybe` combinator to return either a list of matched
characters or None, which is coerced to an empty string inside `cat`.
The `number` parser combines digits and decimal part, then casts their
result as a float.