Add high-level load and save functions for JLD

These functions are similar to their macro counterparts, except that they operate on and return dictionaries instead of variables directly in the global namespace.

save takes a filename and a dictionary with bytestring keys. The dictionary key-value pairs are saved in the file, with the keys as the variable names and the values as their contents.

load takes a filename and (optionally) a list of variable names to read. If no variable names are given, all names in the file are read. It reads the variables into a dictionary that is returned.
Change the macro load to return the list of variables loaded

Previously, this macro would simply return the value of the last variable it read. This is more useful.
Append instead of overwrite in save; make the dict typing a little less restrictive
Revert saving in "r+" mode, use "w" instead

"r+" requires the file to already exist. Appending data to files is tricky and not terribly intuitive (what if data with the same names are already there?). I think "w" is better.
Further relax the Dict type in save()

Given that the typing of dict comprehensions is poor at the top-level, it is silly to make folks jump through hoops to make sure that they String keys really are strings.  The bytestring function will error just fine by itself, although perhaps it could use a nicer error message.
Add doc and a test for the save/load functions
Update save/load API, docs, & tests per discussion

Implement save/load such that the following is possible:

    vardict = load(filename)
    var1, var2 = load(filename, "var1", "var2")
    save(filename, vardict)
    save(filename, "var1", var1, "var2", var2)

as suggested by Tim Holy.
Merge pull request #101 from mbauman/save-load

WIP: Add save and load functions that operate on dictionaries
Docs: save()/load() are better than atsign equivs
Update README.md
Skipping writing objects with pointers (fix #84)
Support custom bitstypes (fix #99)
Correct character encoding for Array{ByteString} (fix #100)
load(file, "varname"): don't pack single-variable in a tuple
Re-use object references

Use an ObjectIdDict to keep track of previously saved array objects, and reuse the their references if saved again in a different place.  This can drastically reduce file size.
Read back repeated references as the same object

This preserves reference semantics