Created PCFGRule object, which is meant to replace PhraseNode
1) Added hash functions
2) Renamed _amap to amap in ArgumentMap
3) Added function to generate all possible argument mappings
Merge remote-tracking branch 'origin/master'