Add basic capability of editing surveys.

In addition to adding a basic capability of editing surveys, this patch also does some minor refactoring. Now, the only components that contain any state is Survey and SuveyForm. Every other component is a stupid component. They simply represent props, and actions are propogated upwards using callbacks.

Admittedly, this is not the best patch in terms of small and concise commits. I blame the fact that I basically don't know what I'm doing here.