Release 1.4.0 - 25.05.2022

INCOMPATIBLE CHANGES
- `dv::Accumulator` now generates 8-bit integer images instead of floating point, which is easier to
  use and is more consistent with other classes generating images.
- Data type `dv::Point2f` used in `dv::TimedKeyPoint` has been changed to a Flatbuffer struct instead
  of a table for performance and consistency reasons. This will not allow previous `dv::TimedKeyPointPackets`
  to load properly from storage. At this point we do not believe such files to exist and this change will
  have no to minimal impact to users.
- Converted several simple enums to enum classes in all headers for better code quality, this will require
  users to use the fully qualified class name, eg. dv::Accumulator::Decay::EXPONENTIAL.

NEW FEATURES
- Native Windows (MSVC) support
- Calibration: improved support for DV-SDK XML files, also supports oldest file format now.
- CameraCalibration: added getCameraMatrix() method to get a standard OpenCV 3x3 camera matrix.
- Concepts: new Enum concept, consistent naming for concepts, header includes cleanup.
- utils.hpp: introduce and use TimestampClock and TimestampResolution.
- Adding a method for device discovery.
- Adding `dv::camera::StereoGeometry` class that handles rectification of stereo data streams (events and images) and
  depth estimation.
- Adding `dv::SemiDenseStereoMatcher` class that calculates disparity on stereo synchronized event streams or images
  by applying accumulation into frames and disparity using a stereo block matching algorithm.
- New landmark type is added with an ability to be visualized in `PoseVisualizer` class.
- `dv::io::CameraCapture` introduces getPixelPitch method that can be used to lookup the pixel pitch distance.
- `dv::io::CameraCapture` adds frame interval setting and exposes low level config setting functions.
- Fully support Equidistant (fish-eye) lens calibration model for undistortion.

BUG FIXES
- Fixed a bug in `dv::Accumulator` which caused timestamps to be incorrectly generated when
  generating multiple frames.
- CalibrationSet: const-ify several functions that do not modify the content.
- Removing unnecessary asserts in `CameraGeometry::backProject` method when sub-pixel
  implementation is used.
- CMake: improved handling of custom Boost version, will now always use custom version on
  systems that require it (Ubuntu LTS 18.04 Bionic and 20.04 Focal).
- Dependencies increased to CMake 3.16, Eigen 3.3.9, fmt 7.1.3.
- Stereo transformToC0 was loaded incorrectly, fixing the correct order of transformation matrix values.
- `dv::EventStore` added missing assignment operator for dv::EventPacket as in constructor.
- `dv::visualization::colors::someNeonColor` method is now inline to fix compilation errors.
- `dv::io::MonoCameraWriter` was not saving resolution metadata correctly.
- Fixing a bug in `dv::features::EventFeatureLKTracker` to maintain a minimum amount of events to prevent
  wrong behaviour when event stream contains very little amount of events.
- CMake project now validates compiler version to be compatible with the project.
- Adding a few missing methods in python bindings: `dv::now()`, `dv::toTimePoint()`, and `modifyTimeInterval` in
  `EventStreamSlicer` that accepts a `timedelta` variable type.
- dv::io::SimpleFile: fixed possible race condition on creation of writeable files.
- dv::(Pixel)Accumulator: consistent checking if events are within size bounds; DEBUG mode will check all events
  with resulting drop in performance. Release builds will not check bounds at all for maximum performance.
- Use dv::runtime_assert() instead of assert() in most places for more consistent error reporting.
- `dv::io::MonoCameraRecording` bugfix that caused runtime errors when built with MSVC.
- `dv::StereoEventStreamSlicer` is now guaranteed to execute the callbacks only when both streams supply enough
  data.
- Changed `dv::Accumulator` constructor to provide more reasonable default parameters.
- Transformation.hpp: fix delta() function to get relative transformation.
- `CameraCalibration` and `IMUCalibration` now validate transformation matrices to be strictly homogeneous.

BACKPORTED BUG FIXES
- FilterChain: ignore empty packets during time monotonicity check.
- `dv::PixelAccumulator` now return `-1` timestamp when no events were passed into accept.
- `dv::Accumulator` generates identical output when called `generateFrame` without passing data.
- CameraGeometry: `undistort` method returned incorrect result if used with floating point coordinates.