Merge branch 'release/0.3.9'
uitl: Fix header markdown in comments
build/Documentation: Ignore Clojure dotfiles

Building marginalia documentation while editing the Clojure sources was
causing the build to fail, as marginalia was including the Emacs
temporary dotfiles. Stack trace:

Exception in thread "main" java.io.FileNotFoundException: /home/chris/src/pip-db/src/pip_db/.#util.clj (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:146)
	at java.io.FileReader.<init>(FileReader.java:72)
	at clojure.tools.namespace$read_file_ns_decl.invoke(namespace.clj:65)
	at marginalia.core$path_to_doc.invoke(core.clj:161)
	at clojure.core$map$fn__4087.invoke(core.clj:2434)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:473)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$map$fn__4087.invoke(core.clj:2426)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:473)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$map$fn__4087.invoke(core.clj:2426)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:60)
	at clojure.lang.RT.seq(RT.java:473)
	at clojure.core$seq.invoke(core.clj:133)
	at clojure.core$apply.invoke(core.clj:601)
	at marginalia.hiccup$eval53$fn__54.invoke(hiccup.clj:99)
	at clojure.lang.MultiFn.invoke(MultiFn.java:163)
	at clojure.lang.Var.invoke(Var.java:415)
	at marginalia.html$toc_html.invoke(html.clj:187)
	at marginalia.html$uberdoc_html.invoke(html.clj:398)
	at marginalia.core$uberdoc_BANG_.invoke(core.clj:197)
	at marginalia.core$run_marginalia.doInvoke(core.clj:282)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at user$eval722.invoke(form-init5188639243981527109.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:6511)
	at clojure.lang.Compiler.eval(Compiler.java:6501)
	at clojure.lang.Compiler.load(Compiler.java:6952)
	at clojure.lang.Compiler.loadFile(Compiler.java:6912)
	at clojure.main$load_script.invoke(main.clj:283)
	at clojure.main$init_opt.invoke(main.clj:288)
	at clojure.main$initialize.invoke(main.clj:316)
	at clojure.main$null_opt.invoke(main.clj:349)
	at clojure.main$main.doInvoke(main.clj:427)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at clojure.lang.Var.invoke(Var.java:419)
	at clojure.lang.AFn.applyToHelper(AFn.java:163)
	at clojure.lang.Var.applyTo(Var.java:532)
	at clojure.main.main(main.java:37)
Subprocess failed
uitl: Add JSON encoding functions

This adds a suite of functions which can be used to conveniently encode
data structures using JSON notation, and assign them to global variables
and embed them in inline scripts.

Issue #272.
views/download: Use util JSON functions
search: Generate results table on client side

This means that the server no longer generates a static HTML table and
transmits it, but instead embeds a JSON object containing the encoded
results, which are then assembled at the client's end to populate the
table.

Issue #272.
log: Add notes for Wednesday
Implement search results map

This modifies the behaviour of the search model such that a search
returns a results map with the following attributes:

    {
       :query                      <query map>
       :no_of_records              <no of records in database>
       :no_of_matches              <no of records which matched query>
       :no_of_returned_records     <no of records returned to user>
       :max_no_of_returned_records <max no of records returned for a query>
       :records                    <vector of record maps>
    }

This greatly simplifies the search model and controllers, allowing all
processing of the results to occur on the client side. To achieve this,
the response map is encoded in JSON format and embedded with the search
and downloads pages.

Note that at this time, the no_of_records attribute is not set
correctly.

Issue #272.
models/search: Implement no_of_records response

Issue #272.
search: Populate the meta tags text dynamically

Issue #272.
download: Show "No Results Message" when needed

Issue #272.
views: Remove old UI fluff

We're no longer using:

 * Beta warning messages - these are not needed now that the meta
   results shows when results have been limited, e.g. "Found 50 results
   of a possible 5771 and returned the first 20...".

 * Pagination - There's no use to it now that we have a properly
   enforced maximum number of results.

Issue #272.
Merge branch 'issue/272'
test/views/error: Add status-500 test
test/views: Add download page test
Bump release version for '0.3.10'
Apply clojure linter style recommendations

Use:

 * (if-not x) instead of (if (not x)).
 * (seq x) instead of (not (empty? x).
Automatic indent of Clojure sources
Merge branch 'release/0.3.10' into stable