Implemented compound and binary functions

- Added unit tests for compound and binary functions.

- Added unit tests for basic operators

- Added left shift and right shift

- Added unit test for homomorphic AND, with timings.

- Added PolynomialFunction interface, which is all that is required for
  evlauation and making compound functions.