(#13341) Add wrapped exceptions
Puppet::Error can now take an original exception as an argument. It had some
functionality for reporting errors in parsed files which I didn't think
belonged in our base error class. I moved it out into a module and created
ParserError and ResourceError for the cases that use it.