Revised optimizer and its tests; issue #30

@subutai @scottpurdy please review.
The revisions to optimizer.py are to included bounded optimization.
optimizer_test.py was redone to test against more cases (parameter boundaries, local vs global max) and correct some calculations. I also added detailed failure messages.
What's the point of having optimizer be a class variable `self.optimizer`? Cleaner to leave it out and just use it directly in the methods below.  If you want to avoid typing too much, we can just do `import nab.optimizer.twiddle as optimizer`