Refactored evaluate method

Took each of the separate operations out of evaluate so it is easier to
read. Also fixed a bug with negative numbers inside of parentheses.