add BaseEngine::SaveFileAs, rename BaseEngine::Is*Allowed to Allows*, make more methods abstract