Update specs to match what code actually produces

* Changed some iolist() to iodata() because function can return
  binary(), which is not allowed in iolist().
* On error, compile and match return {'error', any()}; replace can also
  return 'error'.
* Changed compile arg and return value to distinguish between uncompiled
  and compiled pattern.
Update tests

* Moved two compile tests from match_test/0 to compile_test/0.
* Removed a duplicate test from match_test/0.
* Added a {capture, _, index} test to match_test/0.
* Added a RE syntax error test to compile_test/0.
Update copyright years
Update README and add CONTRIBUTING and THANKS
Fix re2:replace result type

re2:replace always returns a binary().
Make error result types more specific than any()
Reformat specs