Start to implement source-def module

This is the first step toward making the config file extensible.
Design is in the namespace documentation of hesokuri.source-def. This change
does not actually start to use the source-def object in the heso object.
Show config-file as pretty-printed Clojure data

This is an alternative to formatting it as rich HTML. The config-file format
will be more complicated with user-specified live-edit branches, so the rich
formatting logic will no longer show all the information. This change simplifies
the printing so it is more universal.
Change name/meaning of heso field from sources to source-defs

source-defs is an array of source-def objects, defined in hesokuri.source-def.
common-sources function still returns the host-to-path map. Docstring has been
updated to clarify that.
Replace :peer-dirs on source object with :source-def

Rather than keep simply the host-to-path map on the source, keep the actual
source definition. All uses of the live-edit-name constant are in source.clj,
so this gives the source object the data it needs to calculatea dynamic
live-edit-name value.
Replace repo/is-checked-out? with repo/checked-out-branch

checked-out-branch is more flexible because it tells you the branch that is
checked out, rather than check if a certain given branch name is checked out.
Change hesokuri.source to be amenable to multiple live-edit branches

Before, hesokuri.source assumed the live-edit branch was a single constant
string. Now it uses a function to determine if a given branch name is live-edit.
The advance-a function changed the most. It become slightly clearer because the
optimizations that were in there before had to be removed (and probably should
never have been there in the first place).

Also, when pushing, we no longer try to push local versions of live-edit
branches "normally" before forcing; we always force, pushing to an underscored
name like foo_hesokr_bar. This is because once the live edit branch name is
configurable, there is no guarantee that the other peers agree what branches
qualify as live-edit.
Properly refresh source when restarting advance-a process

When starting advance-a over again for every branch, we were not using the
most up-to-date branches. We were refreshing and getting updated branch
information, but not passing it to the recursive call with "recur".

This change makes advance-a use the up-to-date branch list when recurring.
Read live-edit-branch from the config file if available

Move live-edit-branch? from hesokuri.source to hesokuri.source-def, and make
the source object properly read from it, rather than assume "hesokuri" is the
only live edit branch.