Screen: Improve drawtext plugins for Linux, add font caching.

The drawtext rendering plugins on Linux (and optionally OSX) now
maintain separate sets of OGLT or FTGLES font objects for use in
OpenGL text rendering for each onscreen window. For this purpose,
Screen() now passes the numeric parent onscreen window handle for
each drawingtarget (onscreen/offscreen/texture) as a "contextId"
to the drawtext plugins. The plugins distinguish different windows
and thereby associated OpenGL contexts and maintain settings for
each of them.

This is to allow that OpenGL resources like display lists and glyph
textures or glyph atlas textures are not shared between master OpenGL
contexts, but stored separately. This makes text rendering work if
OpenGL context resource sharing is either disabled by usercode, or
impossible, e.g., because different onscreen windows are located
on different X-Screens and therefore can't share resources.

-> DrawText now works if multiple onscreen windows are opened on
   different X-Screens. Before it malfunctioned for all but the
   first opened window due to the unsatisfiably OpenGL context
   resource sharing requirement.

Additionally, a LRU cache is now implemented for font objects
corresponding to different font settings of a context. The cache can
hold a certain amount of font objects and performs LRU replacement
on each context, if the cache gets full. This way, switching between
different text settings on Linux no longer slows down the succeeding
drawtext call if the font objects are already in the cache.

-> Provides constant speed text rendering when switching text settings,
   wheras before, a slowdown of about 10x - 15x was observed after a
   setting change. Typical numbers from a 2010 MacBookPro with NVidia
   GeForce 330M: About ~0.3 msecs per "Hello World!" text draw with
   constant or switched settings. Before the caching, switching settings
   caused a slowdown to about 3.5 msecs for first draw after switch.

-> Screen() for 64-Bit Octave on Linux rebuilt with new plugin api context
   support and tested.

-> libptbdrawtext_ftgl[es]64.so.1 for 64-Bit Linux with OpenGL / OpenGL-ES
   modified, rebuilt and tested.

A new benchmark DrawTextFontSwitchSpeedTest.m allows to benchmark performance
of text switching on a system.

Additionally the text renderer on Linux now returns the true font family name
aka Screen('TextFont') of a selected font, *after* a Screen('DrawText') call,
so scripts can actually check if they got the font they wanted, or just a
substitute font, because the requested font wasn't installed on the system.

Some robustness improvements were made to FontInfo.m to test and demonstrate
this.

-> All Linux and OSX Screen / drawtextplugin mex files need rebuild before release.
Linux: Rename "Makefiles", clean them up a bit.

-> Shorter names without useless and outdated _ubuntugutsy postfix.
-> Help text describes actual purpose of the files.
-> Better error checking and tidying up.
Screen: Make timestamp check for OpenML/OS-Builtin method slightly more paranoid.

So far we didn't check for swap completion timestamps before swap was scheduled
if the swap was scheduled via normal bufferswap call, instead of osspecific_asyncflip.

Add a check for this as well.

-> Screen for 64-Bit Octave on Linux rebuilt.
Delete old makefiles for 32-Bit OSX, old Windows.

Also delete the 32-Bit drawtext plugin for OSX, now that we don't
support 32-Bit Matlab/Octave on OSX anymore.
Add Super-Joana's SuperShapeDemo :)

A new OpenGL demo, demonstrating rendering of so called Supershapes.
Drawing / rotating the shape is fast. Creation/Updating of the shapes
shape is relatively slow, due to computation on the CPU. This could
only get much faster by use of GLSL Vertex- and Geometryshading on the
GPU.

This demo was contributed by Joana Leitao.

-> PsychDemos/OpenGL4MatlabDemos/SuperShapeDemo.m added.
DaqAInScan: Add the hack used by user masondar for 64-Bit OSX.

64-Bit OSX has problems detecting all Daq interfaces properly.
Add some hack that worked for one user on the forum "masondar123",
e.g., ptb forum message thread from June 7 2013.

If we are on 64-Bit OSX, aka IsOSX(1), we turn detection error()'s
into pure warning()'s and hard-code the 'IndexRange' of interfaces
to scan, instead of using the flawed detection results.

Testing on my USB-1408FS showed that DaqAInScan works reliably
on Linux and Windows, and sort of ok on 32-Bit OSX. On 64-Bit OSX
this hack doesn't help me on 10.5.8 Leopard or 10.7.x Lion, but
masondar reported success on a 10.8 system with USB-1608FS. If this
is due to different devices, or different OS'es, or different
runtimes or just luck, who knows? Anyway, add this hack to make
stuff work at least on the one setup (masondar's) were it apparently
can work. Hopefully this also helps others...

-> DaqAInScan.m modified.
DaqAInScan: Fix interface enumeration again - Code from hell!

If the .product name string is empty in listed AllSNs, then
the following strvcat deletes those slots and the numbering
changes!

Add dummy 'xoxo' strings whenever an empty .product string
is encountered, so this failure is prevented.

-> Makes it work on the other Linux box.
DaqAInScan: More code from hell...

Try to make daq detection more robust on OSX - always choose device
with maximum index. Yes, it is pathetic… …and it still doesn't work on
my 10.7.5 with
64-Bit Matlab.
Revert "DaqAInScan: More code from hell..."

This reverts commit 87fbd7ccdb2f4d98826f27474077c7ce13b9b9af.

The idea is correct, but this must happen outside of this
function, in DaqDeviceIndex, or we'll use inconsistent daq
indices on different calls.