Throw ViewNotFoundException when view not found

Currently when trying to do View::make(view) on a view that doesn't exist, an InvalidArgumentException is thrown. Now that is completely correct but I find that a little too generic in terms of catching it. This PR adds a specific Exception `ViewNotFoundException` for that.

Aiming to 4.2 as people may be catching `InvalidArgumentException` currently in their code.