added support for reverse ids

flake_server:reverse_id/0, flake_server:reverse_id/1.

Reverse IDs are roughly reverse time-ordered when sorted lexicographically.

This allows flake ids to be used as object version timestamps in lexicographically ordered data stores where the desired use case is to get the latest version of an object first and the first one last, during an iteration.  This is important because usually data stores perform poorer when doing a reverse iteration ( foldr() ).

We simply achieve this by multiplying the timestamp and the sequence number by (-1). This is feasible in Erlang as positive and negative integer representation requires the same memory size (60 bits for small integers i.e. -576460752303423489 < i < 576460752303423488 in 64-bit architectures)

Another alternative could have been to calculate the time from now() to a future date, but this has the side effect that it might lead to confusion with normal ids generated with flake_server:id/0.

Signed-off-by: Alejandro M. Ramallo <aramallo@mac.com>