Remove unread DisplayObjectFlags.DirtyPaint flag

Was set in six places, including propagation up the display list, but never read.
Remove single-line single-call site method DisplayObject#_dirtyColorTransform
Inline single-line method DisplayObject#_dirtyMatrix

We manually set dirty flags all over the place, and this abstraction doesn't gain us anything.
Call _invalidatePosition from DisplayObject#_invalidateMatrix

The former is called everywhere the latter is.
Fix bugs and remove redundancies in propagation of dirty flags in the display list

Of note, only `DirtyChildren` was ever read, but most things *set* `DirtyChild`. Removed the latter, made everything set the former.
Optimize flags propagation in display list

- split up `_propagateFlags` into `_propagateFlagsUp` and `_propagateFlagsDown`
- got rid of `Direction` enum and associated `if` blocks
- moved recursion over children into `DisplayObjectContainer` override of `_propagateFlagsDown`
Optimize flags propagation in frame tree

- split up `_propagateFlags` into `_propagateFlagsUp` and `_propagateFlagsDown`
- moved recursion over children into `FrameContainer` override of `_propagateFlagsDown`