Merge branch 'master' of git://github.com/psychopy/psychopy

Merge: should fix testing?
git push origin masterMerge branch 'master' of git://github.com/psychopy/psychopy
BF: Handle case of all default metadata

can now start exp. with hdf5 saving , even if none of the exp. or
session meta data is  provided.
BF: eye tracker validation plot image

Is now saved in the directory specified with the "save_figure" kwarg of
the ValidationProcedure class. By default, this arg is None, which
results in the image being saved in the same folder as the script being
run.
BF: smi tracker.getEvents() working again
BF: (re) implemented SMI ConfigureFilter

Did it April 4th, but commit must have failed or something, as the
original change was never logged as a commit to github. ;( ??
BF: EyeTracker Validation crash

if no data could be collected for any validate point, the analysis was
crashing.
DOCS: bumped version number for release
RF: info.py - pylint-prompted style changes
Merge branch 'master' of git://github.com/psychopy/psychopy
ADD: iohub Serial Device

Intended to be used for general purpose access to data received on a
serial port. The serial rx stream can be split into serial events by
specifying values for prefix, delimiter, and / or fixed_width
configuration options.
RF: replace some import * with specific imports

- some other minor pylint inspired changes
RF: some pylint style tweaks for data.py

- imports, exceptions, some whitespace, multi-statement lines
- openpyxl imports are still done several places
RF: style tweaks in builder.py
ENH: Added PST box support to ioHub Serial

See coder/iohub/serial/pstbox.py demo for an example.
RF: microphone code clean-up
Merge pull request #564 from flipphillips/master

Fixed handling of 'QUEST' v 'quest' from builder
Merge pull request #565 from isolver/master

BF and ENH: ioHub related
ENH: getKeys timeStamped arg can now be a float

If a user wants the times returned by getkeys() to be relative to an
other time,  timeStamped  can be passed with a float or int as the
object type. In this case, the timeStamped  value is simply subtracted
from key times.

This allows for functionality like when using a clock and reseting it
when the flip occurs. However I find this simpler, and with less
overhead than using Clocks in many cases. It is also more accurate, as
the time right after the flip blocking code returns is used, so the flip
time is immune to the time it takes to run and code in win.flip()
following the actual flip time.
Depending on the time it takes to run any functions have been set to run
after the flip, this time difference could be biog enough to care about.

Ex:

flip_time=win.flip()
# do stuff
# ...
# get keys relative to the flip time
keyevents=event.getKeys(timeStamped=flip_time)
BF: getKeys isinstance was eval True to be an int

So if timeStamped=True in getKeys, events were being returned with the
time-1. Oops.

Now fixed for elif True: is checked before isinstance for float, int,