Currently, CompositeCommand does two things:
1) Provide an implementation of the Composite pattern for an ICommand.
2) Listen to an IActiveAware-implementing command's IsActiveChanged event, firing each CanExecuteChanged event as a result.
These are two separate concerns, with the latter best separated as a decorator that commands can optionally use.
In addition, this decorator should not require the wrapped ICommand to implement IActiveAware, it should accept a separate IActiveAware argument, so as not to violate the Liskov substition principle.