Regexes are now reversible

You can now call reversed(<any lego object>) to return a new lego object
which will match the reverse of any string accepted by the original.
E.g. if x accepts "beer", then reversed(x) will accept "reeb". I'm
hoping to add similar functionality to the FSM side.