pybind11::args should have been derived from tuple

args was derived from list, but cpp_function::dispatcher sends a tuple to it->impl (line #346 and #392 in pybind11.h).  As a result args::size() and args::operator[] don't work at all.  On my mac args::size() returns -1.  Making args a subclass of tuple fixes it.
diff --git a/example/example11.cpp b/example/example11.cpp
index 466eed4..799fa62 100644
--- a/example/example11.cpp
+++ b/example/example11.cpp
@@ -27,8 +27,8 @@
 }
 
 void args_function(py::args args) {
-    for (auto item : args)
-        std::cout << "got argument: " << item << std::endl;
+    for (size_t it=0; it<args.size(); ++it)
+        std::cout << "got argument: " << py::object(args[it]) << std::endl;
 }
 
 void args_kwargs_function(py::args args, py::kwargs kwargs) {