React example for the shootout

issue #2203

Thought I'd open this as a PR to make it easier to compare

All work was done by @petehunt