CLJS-509: spurious protocol warning

change analyze-file to also accept java.io.File. change parse-ns so that
we restore namespaces to it's value prior to analysis. change
compile-file so that we always analyze files even if they don't require
re-compilation. parse the ns form after that to extract out the
necessary information.
only analyze files that don't need recompilation if we haven't seen them
before.
don't reset namespaces, we have smarter incremental analysis now based
on whether a file needs recompilation