Fix issue 446 crash calling replace color in a sprite with no layers

- Fix access to a NULL pointer in ReplaceColorFilterWrapper
- Fix typo in NoImageException
- Do not allow to remove all layers in RemoveLayerCommand
Use generated widget app::gen::DuplicateSprite in DuplicateSpriteCommand
Add layer_properties.xml widget