Make ProcedureSignature a case class

ProcedureSignature was used as a value object everywhere. The only
reason it was a trait was so et.NativeFunction could directly implement
it. Instead, make et.NativeFunction have a separate ProcedureSignature
field.

This simplifies operations partially modifying signatures as pattern
matching, .copy, etc can be used
Fix copy-and-paste variable names

"constructorSignature" was copied and pasted in to the accessor and
mutator planners