fix Cursor's copy constructor
Summary:
The Cursor class didn't provide a copy constructor accepting a
"const Cursor&". The existing constructor only accepted references to
non-const Cursor.
This updates the constructor to also accept "const Cursor&". I also
made the template parameter checking more strict, so that it only
accepts other CursorBase classes. This prevents the compiler from
thinking that a Cursor can be constructed from any other possible type
when performing overload resolution.
Test Plan: Ran all of the folly cursor tests.
Reviewed By: davejwatson@fb.com
FB internal diff:
D1208428