Soft data matching

There are two datasets A and B. 

This pull request lets dedupe learn three models simultaneously

one for when both records are from A
one for when both records are from B
one for one record is from A and the other is from B.

Implementation is along the lines of #151

This pull request also implements categorical variables.

If there are three types of things (a, b, and c), then between two records there are the following six possibilities that
can be represented by five dummy variables

```
a-a  0 0 0 0 0
a-b  1 0 0 0 0
a-c  0 1 0 0 0 
b-b  0 0 1 0 0
b-c  0 0 0 1 0
c-c  0 0 0 0 1
```