read-string must be the responsibility of read-exports-fn

This way an alternative version of read-exports-fn could keep the
exports data in memory instead of reading it from file.
Remember which vars are already defined and declare them as `extern` in C

This change is needed for the REPL[*] (which compiles each form into a
separate shared library) in order to be able to re-define a
'closed-over' variable and having the closure behave as expected.

[*] bertfrees/cljc.repl

Example:

(def x 1)
(defn get-x [] x)
(assert (= (get-x) 1))
(def x 2)
(assert (= (get-x) 2))