Scala Pair and Map support

Support for Scala pair PType inference and using binary functions to map from PTables. This makes the use of pairs more intuitive and makes destructuring via case in functions possible.

Also support for Scala Map PTypes, but because by default Scala maps are immutable, it many generate many unnecessary copies in practice. You have been warned.