Some functional goodies for Otter, for use in convergence

- depend on pyrsistent
- add freeze and unfreeze functions to otter.util.fp
  (to be contributed to pyrsistent)
- add "partition_bool" and "partition_group" functions to otter.util.fp
  (to be used by convergence)
> Are you asking just about eqtype, or IsTypeAndValue too?

I was asking about `eqtype`. I understand its a trivial convenience function but I am not sure if it adds any more value over `matches`. Maybe more readability? Maybe its just Haskell influence `eqtype = matches` :)? In any case, I think either is fine.