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
Implement INamed for cljs.core/MultiFn
name every fn with a fully qualified name

makes it easier to grok stack traces
Merge remote-tracking branch 'upstream/509-protocol-warn' into my-changes

* upstream/509-protocol-warn:
  don't reset namespaces, we have smarter incremental analysis now based on whether a file needs recompilation
  only analyze files that don't need recompilation if we haven't seen them before.
  CLJS-509: spurious protocol warning