Prevent partially initialized Bnd Workspace(s)

It is possible during the creation of a Bnd Workspace to have an
exception thrown, resulting in a partially initialized Bnd Workspace.

This change ensures that a Bnd Workspace will only be retained if it was
fully initialized, in the failure case it will ensure that the workspace
is closed.
Merge pull request #557 from ateirney/bndworkspaceinit

Prevent partially initialized Bnd Workspace(s)
Fixes #562 - Excessive building when files in cnf are modified
Now the bnd workspace will be refreshed only once before the builder
starts. Only build.bnd, files in ext and files included by the -include
directive will trigger the refresh.
Only get sub builders once per build
Project.getSubBuilders() is quite a heavy operation, so only call it
once per build
Excessive building when files in dependent project target dir changes
Files in a dependent project target dir ('generated') was not filtered
out.
Force rebuild when .bnd file has changed
Otherwise bnd will not rebuild it