Unusual use of << operator... not a bit shift?
What exactly is &lt;&lt; doing in this case?


It's directing the data into an output device (stream).


http://www.cplusplus.com/doc/tutorial/basic_io/


Yes, it's confusing using the same symbols for more than one thing...


  Moreover, F seems to never be defined prior to this.


F() is a macro. It's defined by the Arduino core in WString.h:

#define F(string_literal) (reinterpret_cast&lt;const __FlashStringHelper *&gt;(PSTR(string_literal)))