build: don't crash when target exists but is not in the DB

This happens if the Fubsy database does not exist or is empty, even
though everything has been built recently. That's not an everyday use
case, but we have to handle it more gracefully than an unexpected
panic! (In particular, we have to rebuild the world because we don't
know what changed -- same as SCons does.)
runtime: log function calls made from build rules (eg. remove(), mkdir())
build.sh: use 'go get -tags="foo,bar"' build tags instead of
symlinking xyz.go.real or xyz.go.fake files to xyz.go depending on
whether some feature or lib exists on the system.

so, when kyotodb is installed and detected by pkg-config, the tag
"kyotodb" is defined and passed to the 'go get' command.
the dummykyotodb.go file is only built when !kyotodb is true.
build.sh: refactor tag setting a bit
db: rename DummyDB to FakeDB

quoting Martin Fowler:
"""
  * Dummy objects are passed around but never actually used. Usually
    they are just used to fill parameter lists.
  * Fake objects actually have working implementations, but usually take
    some shortcut which makes them not suitable for production (an in
    memory database is a good example).
"""

(http://martinfowler.com/articles/mocksArentStubs.html)