Added more static factory methods for functions

- Added support for double width AND and XOR functions.

- Added negation function.

- Added unit tests for double width AND and XOR, as well NEG.

- Moved some methods to FunctionUtils to cut down on code replication

- Resolves #12

- Resolves #13