Added the capability to pass in a dictionary of key value pairs that will be interpreted as a set of variable/valuable assignments in the IPython notebook. Those variable/value assignments will be executed as the first cell of the notebook. This enables a more "templated" notebook. This is not the only way to skin the cat, but one that works for certain use cases.

Added limited support to command line execution, but not very intuitive. Main use will be by writing wrapper scripts around the notebook_runner. Will update later to make native runipy command line execution a little cleaner.