Finishing assignment 4.2

Generating query plan: pushing selections and computing optimal join
order (left-deep only). Designed a class hierarchy to represent the
query plan.