Add experimental target to Makefile

f3probe, and any other future f3 application that isn't marked
as stable, will only compile with target experimental.
Skeleton of F3 probe
Make all applications share the same version
f3probe: move (missing) action to libprobe.c
f3probe: implement file device

NOT FINISHED
f3probe: add unit test
f3probe: finish implemention of file device
f3probe: implement block device support
f3probe: implement probe_device()
Improve Makefile for debugging code

- Addopt -ggdb to add debugging information to binary.
- Add cscope target to help navigating the code.
- Add cscope.out to .gitignore.
- Add *.swp to .gitignore.
f3probe: reset USB drive to flush its cache

The internal cache of the USB drive was keeping all recent writes,
so subsequents reads were correct even when the underlying
storage was faulty.

The code is based on usbreset.c available on the following page:

How do you reset a USB device from the command line?
http://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
f3probe: map block device to underlying USB device

The code is based on udev_example.c available on the following page:

libudev and Sysfs Tutorial
http://www.signal11.us/oss/udev/

f3probe nows requires library libudev.

This patch also updates the following files to reflect
the dependency of f3probe on libudev, and
the experimental status of f3probe: Makefile and README.
f3probe: improve debugging facility
f3probe: improve probe_device()

- It works with drives of any size.
- It precisely identifies the real size of drives.
- It identify the geometry of the drive.
f3probe: improve report

- Show copyright header.
- Use friendly and precise units.
- Measure and show time to probe device.
f3probe: more than 45% speed-up with limbo drives

Skip the second test of a block if the first time test reads
something really different from what was written.
f3probe: rewrite file device

This patch makes file devices use the same geometry model that
probe_device() probes for.

This change helps one to test whatever probe_device() finds in
the field.
f3probe: fix bug at search_wrap()

search_wrap() was considering @high_bit to be in blocks,
but it was in bytes.

This patch also improves the unit test to catch the fixed bug, and
to use real geometries.
f3probe: verify block number

This patch makes dev_read_block() and dev_write_block() verify
that their parameter @block is in the valid range of the device.
f3probe: add block size to the drive model

Using the correct block size of the block device can improve
communication speed with the device.