More versatile engine matching

This allows for arbitrary engines, handles npm-style PATH properly and gets rid of the pattern matching dance for `.script.start`.