ignore vim swp files
Make names of proto message more hygienic

Everything except rust-builtin names like `str` or `i32` should now be
possible message names. This was done by not `use`ing any modules, but
instead call them using their full names which makes conflicts impossible.

Also added vim's *.swp files to .gitignore.
Update for language changes, ~[T] -> Vec<T>
move #![allow(dead_code)]

`#![allow(dead_code)]` should be in generated code, not at module
declaration.
Properly use fn deriving in codegen
impl Show for Message

Currently, rust default Show is used. Later, Show should output protobuf
text format.
impl Clone for Message
impl Default for Message
Add protobuf perftest

Compare rust and C++ implementations

Also, note rust-protobuf is compiled with optimization now by default.
minor perftest-cxx tweak
minor test enhancements
Optimize clear of repeated fields

Now repeated message fields are stored in RepeatedField struct, that is
similar to c++-protobuf RepeatedField. Clear operation of RepeatedField
does not invoke destructors of contained messages, thus allocated fields
of cleared messages are not deallocated.

This patch speeds up test_repeated_messages twice.

Note that unlike C++, messages are stored in RepeatedField, not in
RepeatedPtrField.  I believe, Google chose RepeatedPtrField due to safety
issues with RepeatedField in C++.
Store singular fields as pointers

And do not delete memory of singular fields on clear.

This commit also fixes recursive messages, and reduces memory consumption
of messages with lots of unused fields.
test string performance
Option to specify which perftest to run
Replace ~str with StrBuf
refactor codegen
default_instance for any type
First version of reflection

* Read operations only
* text_format is implemented
* Show for Message is implemented using text_format
Fix compilation