Fail fast if there is an exception thrown while instantiating an asset
file.
Clean up of code around asset creation and initialization since it
wasn't obvious why assets had to be initialized with a file object,
given that they may be associated with any number of underlying files --
it turns out that this parameter can be used for either a single file or
a directory, and this is okay since it's effectively under plug-in
control.