Initial commit of C QFS API bindings

This changeset includes the C-compatible wrappers for C++ QFS API. Calls wrap
C++ functions and methods with idiomatic C types and function calls. Every
effort was made to expose full functionality, but small omissions were made
where calls seemed inconsitent or where the API was incomplete on the C++ size.

Documentation is fairly complete in the header, but may need some adjustments
for clarity or grammar.
Replace usage of strlcpy with snprintf

strlcpy is only available on BSDs. Also, see Ulrich Drepper's comment on the
usage of strlcpy.

http://www.sourceware.org/ml/libc-alpha/2000-08/msg00053.html
Adjustments to C API tests

- Allow configuration of metaserver for unit tests
- Fix test that was dependent on -finit-local-zero
- Correct string format parameters for types
- Use correct type for chunks
Modify semantics of getwd

- Change name from getcwd to getwd to differentiate behavior
- Ensure that corresponding setter reflects this change
- Explain semantics of return conditions to caller
- Update unit test to use changed function name
stdio is required here for snprintf
Merge branch 'feature/c-bindings' of git://github.com/sday-qc/qfs
fix qfsc test_get_metaserver_location()

  should not be using static location "localhost:20000"
run the qfsc tests after tool tests
remove using declaration, cleanup includes
prefix enum with qfs_
Unit tests should verify length of iterator ouput
Reconcile iterator type across library

- Defines single opaque, iterator type across API
- Change ABI for qfs_readdir, qfs_readdirnames,
  qfs_get_data_locations/qfs_get_data_locations_fd
- Use forward declared struct for iterator
- Internalizes iterator struct deifinitions
- Update unit tests
Use forward-declaration for QFS handle

To maintain internal type-safety, limit the number of allocations on startup and
restrict pointer semantics, the QFS type has been forward-declared as a struct.
All casts of the KfsClient have been removed, accordingly.
Merge branch 'feature/c-bindings' of git://github.com/sday-qc/qfs into sday-qc-feature/c-bindings

Conflicts:
	src/cc/qfsc/qfs.h
clean up some trailing whitespace
Qfs test script: fix typo in variable name.
Qfs client lib: change read only open to force update the file attribute cache to ensure that for at least several seconds KfsClinet::Stat(const char* path_name) (stat() equivalent) returns the same file attribute as KfsClient::Stat(int fd) (fstat() equivalent), assuming no other calls (rename or delete for example) would result in the cache invalidation. The intention is to help to make code that uses hadoop api that has no fstat() and no lseek(SEEK_END) equivalents handle more reliably file rename in place performed by other qfs "clients".
Qfs c bindings test: fix pwrite test by replacing sizeof() which returns pointer size with strlen(). Fix pread test, by closing and opening the test file, as this is presently required to release chunk write leases and update logical EOF in both meta server and the qfs client's file table.
Merge branch 'master' into topic/krb

Conflicts:
	CMakeLists.txt
	src/cc/libclient/KfsClient.cc