Asset compiler minor refactor

* Make sure asset_compiler_compile_all_complete is always emitted

This fixes a bug which caused assets not to be reloaded, because
the event was never being emitted when there were no files to
compile in the public directory.

The issue caused reloading of assets not to work because it relies
on this and other events to register its completion (which in turn,
flushes are the caches, causing the assets to be regenerated).

* Prevent dual compilation of files on startup

When watching is enabled, the asset compiler compiled each file
twice, because each file watched did compile the file on watcher
initialization. Then the file got compiled once again when the
asset_compiler_compile_all was emitted.

This behavior has been fixed, and files are compiled only once
when starting the application.