Fixed version replacement in downloaded filenames using regex incorrectly

 * replaceAll() uses regex, which could easily cause undesired behavior (1.1 matching 1a1, for example); replace() does the same thing as replaceAll(), but doesn't use regex
 * Also added some protection against trying to update mods that are loaded from a directory (only happens in a dev environment, afaik)