Ensure recipes from CloudRecipeBook have isPublished = true.
Don't check isPublished in Recipe.equalData()

As the comment says, this is actually meta-data
Add caching to CloudRecipeBook.

Closes #40
Use factory pattern for i/o in RecipeBookBase.

 * Add interface RecipeBookBase.IOFactory
 * Add class RecipeBookBase.NullIOFactory, which just
	returns null (no i/o will take place)
 * Add ctors to child classes that take an IOFactory
 * This way, RecipeBookBase can implement save() and
	load directly.
Make ApplicationManager handle recipe books properly

 * Add ApplicationManager.FileSystemIOFactory inner class,
	which sets up proper persistence (closes #26).
 * Getting an ApplicationManager instance requires an
	android.app.Application (so that it can be built with
	a Context).
 * getting RecipeBooks no longer requires a context, as
	ApplicationManager can use the Application context to
	load/save them.
Refactor RecipeBook classes.

 * Make RecipeBookBase non-abstract
 * Rename RecipeBookBase to SimpleRecipeBook
 * Remove UserRecipeBook and FavoriteRecipe, which had no
	specialization over SimpleRecipeBook.
 * Rename LocalCache to CacheRecipeBook.
 * Adjust ApplicationManager to use SimpleRecipeBook for
	storing user recipes and favorites.
Update UML for RecipeBook classes.