Refactored the search

Signficantly refactored the code which interfaces with Pubmed to make it more object oriented and easier to understand. There is no difference in functionality, with one exception: each page of search results is kept in memory, so when switching back to a page which has already been loaded, there is no need to perform a new search. Other than that, it's just a (drastic) alteration of the code base.

I also added some tests using Jasmine.

Probably would be good to do some user testing to make sure I haven't overlooked anything.