Fixed a bug in static library creation.

Static library headers are now added as dependencies but not
as inputs. This solves the problems of:
* Headers being put into .a files along with the .o files.
* The headers being deleted if there is a failure to build
  the .a file.
Reworked dependency implications of includes.

Major rework of how includes are handled to make them
more correct. In summary:

Static libraries no longer depend on each other.

Includes are now grocked AFTER all down-stream includes have been
discovered.

Direct and transitive includes now add dependencies to everything
that depends on the includer.

Binary.includeAdded() now just remembers when libraries are needed,
leaving adding of dependencies till augmentAction().

Note that this hasn't been adequately tested as yet. The next move is
to increase the size of the example to improve test coverage.
Merge branch 'master' of https://github.com/GrahamStJack/bob into doodle-support

Conflicts:
	bob.d
Minor bug-fix with required libraries, and some cleaning up of the example.
Added public-lib rule.

A public-lib is a static-lib except that:

* It is placed into dist/lib instead of obj.

* All its public source files are copied into dist/include.

* Any includes/imports those public sources make must also be
  public sources of public-libs.

The point of this is to put all the files necessary for a binary
development distribution of your project into the dist directory.
Tiny fixes.
Merge branch 'master' into doodle-support