- Changed the directory layout of recorded files. Now, the program
creates a new subdir each time a recording starts. The name of the
subdir will be the track name with a sequence counter appended. The name
of the files inside this subdir will be just the channel identifier (a,
b, c...). For example:
onesong-01/
	a.wav
	b.wav
	...
onesong-02/
	a.wav
	b.wav
	...
anothersong-01/
	a.wav
	b.wav
	...

This makes it easier to manage recordings over time. For example, one
could attach notes, tags or ranking information just by including a
"meta.txt" file inside each subdir. The resulting directory structure
would be easily searchable using standard unix tools; to delete a
recording, you can just rm -rf the subdir, and this would implicitly
delete the metadata as well.

- Updated README

- Added libm reference in Makefile, as latest gcc was complaining.
Several synchronization bugfixes!! I realized that the program was
having problems on more modern, multi-core cpus.
- 2 variables were used to share state between threads, they had to be
declared volatile.
- Added a 100ms sleep after starting device thread(s), before changing
state to MONITORING, otherwise the thread(s) may fail to see the initial
SKIP state, and not reach the barrier point.
- In startRecording/stopRecording, the request variable was set to the
wrong enum type (States instead of Requests). It happens that the
numeric values were the same so everything worked anyway, but it was
actually wrong.