Marked FunctionalOperations as final

This class should have always been final since it's supposed to be a
static class.
car and cdr now call first and last

first and last contain the implementation details while car and cdr are overlays for those functions
Added an edge case to the let function

If there is only one variable provided then the for loop is not used.
Added the dynamic variable class. 

This is an actual implementation instead of the Object[] version that previously existed.