Llr optimizer initial

Hi Sebastian,

This is my latest pull request, which includes the initial code for the LLR Optimizer analysis. I have also updated Steve's template.py code, by taking the approach you suggested-grab his template.py from his repo and incorporate all the suggestions that I commented on myself. I also have tried to upload all data and input files, so if there are any missing, please let me know! The only thing really missing from the optimizer analysis code right now is the implementation of a few additional systematics, as well as adding the priors on the parameters that we do not wish to constrain.
I would like to understand more about this function, and why we need it. Why can we not deal with the zero bins? The thing that fails is that in the pseudo-data, if we try to draw from a poisson with expectation value zero, we get a `DomainError`, but we can fix this only checking for zero bins in `get_random_map` and set the other bins to zero _by hand_. 

The problem I see here is that further on in `llh_bfgs`, you use the same trick, but don't use this function. However, no one guarantees you that the zero bins in that function are the same as the zero bins here. So, in fact you could turn up with a two arrays of different size, which I think will crash your code, no?

So, here  is what I'd like to see:
- [ ] Are there any zero bins at all in the template, or do we just have bins with  very low expectation values?
- [ ] Can we not fix the pseudo event generation instead?
- [ ] How do we ensure maps are __pruned__ the same way everywhere?
 
If this function stays, it should be moved to `pisa.utils.maps`, and renamed `flatten_map`, since it has nothing to do with _"true"_.