Refactor package search logic.

Every bit of code that can search for packages now takes packageSearchOptions,
which can contain appDir and releaseManifest fields.

This generally unifies app packages with "local packages".

We now properly support running tests in app packages, and dependency watching
for app packages is now based on the files declared in package.js, not all files
found in the directory.