Custom types

Adding custom type support to Unexpected (mainly @papandreou's work)