Added support for Nested variables

After a little thought, I've implemented a solution to handle nested variables.

Unfortunately, it isn't the cleanest possible solution (I have had to make the variables list generic instead of constrained to BigDecimals), but have tried to put in the necessary protections against unknown types.

Additionally, have added a method getUndeclaredVariables() which could be useful for determining if any vars are missing/undeclared prior to executing the expression.