Naive approach at functorizing Re

It would be really great if Re worked on bigstrings, substrings, ropes, etc. This is my naive attempt at exposing a functor for this to be possible.

Some notes

* Read the diffs commit by commit until the formatting commit. The whole diff doesn't make sense because I had to re-indent after adding the functor

* I've tried very hard to preserve backwards compatibility and I think I've succeeded. Please confirm though.

* It would be really great if Re exported a packed module like most libraries. Would make organizing this stuff a lot easier.