Refactor asset compilation to support multiple nesting levels
Split Roda.compile_assets into 2 methods

This adds a private _compile_assets method, which avoids some
unnecessary work when recursing.
Don't handle files starting with . specially in read_asset_file

While here, simplify and optimize.