More abstract tracker declaration

    This contribution changes the way how trackers should be implemented by
    programmer. It should be noted first, that from the user prospective,
    Tracker::create() method still can be called with the same effect.
    However, there's no more thing as a "constructor" for Tracker, they
    should be created via static functions, e.g.
        static Ptr<TrackerMIL> createTracker(const TrackerMIL::Params &parameters=TrackerMIL::Params());
    
    From the programmer's perspective now for every tracker what is declared
    in tracker.hpp header is more a "interface", while the real
    implementation class can (and has to) be implemented in .cpp file.
    
    Changes in documentation are also ready as well.
Maybe we can include only opencv2/core/cvdef.h