Organize results in config'd order

When multiple sources are queried, the queries are executed
by async in parallel.  Each query may come back at a different
time.  Instead of putting the results in the final array
immediately, put them in a preliminary array and then reassemble
in the correct order once all the queries are complete.

Ensures that the order of the results matches the order
specified in the sources.js config file.
Keep internal links in the app

If the link has the class `.link-backbone`, use the
backbone history navigator to navigate to that page,
thereby not reloading the whole app.
Sanity check popovers before exec

Check to see that the bootstrap popover settings have
been initialized and that the data segment has the
userid.  If not, abort instead of sending the server
a faulty query.
WIP: customize At.js to do sane things

At.js has some wacky defaults, like putting a space after
each selection that isn't delete-able by the user (hate that!)

It was also trying to sort the results; don't do that, the
server has already sorted them for you.

It was trying to highlight in a wacky way; put a placeholder
in for better highlighting.

TODO:
- replace matching function in highlighter
- add non-breaking space after the inserted <span> element
Move expand/contract back to the right place

Its position is absolute, so it needs to be in a relative block.
Make all metadata same color by default

Reuse the gray color for other things that can be put in
the metadata section
Add comment counts

Two major improvements:

- Add the # of comments below a topic; useful for when
  you collapse comments

- Create a parentMap to facilitate in sorting topics,
  this way it is easy to re-render / re-order, or
  re-set the initial order.
Maintain an array of topics

Useful for sorting the topics in a future release.