Refactor `update` lifecycle method

- internalUpdate method now controls render/mount/update lifecycle
- `update` method now should return Future or null value
- No need to call super.update()