fix(tests/discovery): use host as -peers parameter instead of url

Or it cannot test the functionality correctly.
Moreover, add TestDiscoveryNoWithBackupPeers as the test for it.
feat(discovery): adjust boot order to find peers

The boot order for peers is -discovery, -peers, log data, forming
new cluster itself.

Special rules:
1. If discovery succeeds, it would find peers specified by discover URL
only.
2. Etcd would fail when meeting bad -discovery, no -peers and log data.

Add TestDiscoveryDownNoBackupPeersWithDataDir as the test.
docs: boot order to find peers
fix(store): make NodeExtern.Value a *string

Before this change if the value of a Node was "" it would get dropped from the json
encoding and the Node.Value field would be missing. Fix this problem by making
NodeExtern.Value a *string so that an empty string will be encoded but a nil value
will drop the field.
chore: rename 'heartbeat timeout' to 'heartbeat interval'

Heartbeat timeout means the period length that indicates heartbeat is
out of service, which is different from heartbeat interval.

So we should use '-peer-heartbeat-interval' instead of
'-peer-heartbeat-timeout' in etcd.

'-peer-heartbeat-timeout' is deprecated but still could be used.
feat(Documentation): add a section on consistent reads

We have waited too long to document `consistent=true`. Document it!
Add links to haskell bindings and scrz project
Trivial formatting correction
feat(Documentation/api): document file upload

This gets asked about a lot int IRC/mailinglist/etc. Fixes this issue:
https://github.com/coreos/etcd/issues/383#issuecomment-31183603
fix(mod/lock): correct watch index to remove cpu load

The waitIndex was being pulled from the wrong node in the lock parent which caused the watch to be returned immediately. This caused a continuous set of calls while a client was waiting for a lock.
fix(Documentation/*): fix various typos