Use native set() and fix Clone()

non-native set and the Clone() implementatoin were both causing
warnings. This fixes them, and I think it's actually more accurate.
add ability to specify output directory for generated parsers
Merge /Users/nick/Projects/pijnu