Adding function matchers.

Note: this introduces a breaking change in the #match.
Fixes #1. Get's us closer to #2.
Adding test for the constructor