Asset compiler middleware refactor

On certain situations (such as when file watching is disabled), the
file will not be written if the compiled source has not changed. This
is of particular importance to prevent asset hashes from being
regenerated, due to mtimes being changed.

Added assetHashAlgorithm option option for asset compiler. This allows
using any hashing algorihtm supported by node's crypto module and OpenSSL.

The following events were added:

asset_compiler_compile_all_complete
asset_compiler_minify_complete
asset_compiler_concat_complete
before_asset_compiler_reload_assets
after_asset_compiler_reload_assets