CLJS-574: No warnings when calling functions from unrequired namespaces

Change resolve-ns-alias to special case cljs.core, goog, and Math
namespaces. Special case convention around cljs.core data structures,
but don't support elsewhere. Emit a "no such namespace" warning if we
don't find ns in (-> env :ns :requires).
Do not emit warning when analyzing dependencies, these warnings will be
emitted when the file is analyzed again for compilation anyway.

Change parse-ns so it can take just a source so it's more useful.

Change compile-file so that it doesn't recompile is :source-map is
set. Source maps just don't support incremental compilation and we need
to wait for a real solution.

compile-root was busted, would figure out the path to the js file by
calculating it based on path information instead of the actual namespace
declared by the file. it used to-target-file which has been changed to
use parse-ns to determine the file to output.