Match Dev Asset Experience to Production

Rails is opinionated about how assets should be served in production. In Production assets should be precompiled and then served directly from the public directory. If an asset is not precompiled, than a 404 will be served instead which can render a site useless if an asset is missing. 

In development if an asset is __NOT__ flagged to be precompiled (`config.assets.precompile`), and you reference a file:

```ruby
<%= asset_path('search.js') %>
```

Then rails will render the file anyway giving the illusion that the your development code is correct although it will fail in production. 

This PR improves the production experience by raising errors in development. When an asset is referenced via `asset_path` or `asset_url` an error will be raised in non production environments when:

The asset is not present on the system

```ruby
Asset not present: could not find foo.js in any asset directory
```

The asset is not flagged to be precompiled:

```ruby
Asset filtered out and will not be served: add `config.assets.precompile += %w( foo.js )` to `config/application.rb` and restart your server
```

This change only affects the user facing methods, the auto concatenation feature for javascript and CSS will still function correctly in debug mode.

Assets behaving differently in dev and prod is the number one source of invalid support tickets for Heroku. Since the file displays correctly on their machine locally in development, the production problem is incorrectly attributed to a system problem. Once the source of the problem is identified identified it can be difficult to find the exact file with the problem on systems with many assets. This PR will reduce the chances of deploying broken assets to production by increasing visibility into correct behavior in development.