Add Target::with_feature() and without_feature()

This is a bit of syntactic sugar to make setting/clearing Target
features a bit easier when initializing from a const reference; rather
than making a local copy and using set_feature, you can now use
(chained) with_feature() calls to make temporary mutated copies.