Rename Asset::Initialize() and Asset::doInitialize()

Asset::Initialize(ApplicationData) -> Asset::load(fileName)
Asset::doInitialize(fileName) -> Asset::doLoad(filePath)
Expose Asset::load() and reserve Asset::setFileName() for serialization

Make Asset::load() public and Asset::setFileName() protected. Places
where used Asset::setFileName() to set and load an external file
should call Asset::load() now.

Asset::Load() will verify the validity of the passed in file name and
call doLoad() in derived classes to do the actual loading.
If load is successful, it will return true. Otherwise, false.
As a side effect, Asset::load() will record the file name in
Asset::m_fileName.

Asset::setFileName() is made protected, to keep Asset's API clean.
Ideally, clients of Asset (and its derived classes) should not call
Asset::setFileName(). This method is for de-serialization purpose only.
Remove Asset::m_didInit and Asset::m_isInitalized

Also update UnitTests and documentation.
Assert on MeshShape must be valid when used.

Since MeshShape will load the external file (if any) immediately now,
it must be valid when being referenced.