Added feature generation based on semantic version ranges

The standard feature descriptor generator includes all matching bundle versions, which makes deployment a bit of a headache when your projects use semantic versioning and ranged dependencies.

The features-generate-semantic goal included in this pull request resolves this by choosing only the best version match within a range that satisfies all dependencies. Ideally this would be configurable behavior on the standard features generator, but there were enough behavioral differences that we gave it is own goal at this time.