warn about move constructors that aren't declared noexcept

Summary:
Move constructors normally don't throw, and should be marked noexcept.
In various cases the STL will prefer invoking the copy constructor over
the move constructor if the move constructor isn't declared noexcept.

Users often forget to mark the move constructor noexcept, so complain if
they don't.  Require a /* may throw */ comment if a user's move
constructor can actually throw.

Ideally we should also perform the same check for move assignment
operators.  For now this code only checks move constructors.

Test Plan: Added test cases.

Reviewed By: andrei.alexandrescu@fb.com

Subscribers: exa, doug, net-systems@

FB internal diff: D1228482