Store ingredients, refine search query

This PR adds an ingredient model, stores ingredients there as cocktails are added (so we can offer users a master ingredient list to choose from), and refines the search query to match only on supersets of the requested ingredient array.