core: Add a Zero and One trait to num

I believe these are the last traits we need in order
to start grouping our numerical types into mathematical
groups and rings.
Register snapshots
Remove the cfg(stageN)-specific serialize code.
doc: describe the Drop trait. cc: #4217
doc: 'trait constraints' -> 'inheritance'. Expand

/cc: #4217
tutorial: Reorder sections on traits

/cc: #4217
tutorial: Rewrite method section to deal with explicit self

Has to be moved until after the pointer discussion.

/cc: #4217
Use explicit self in rest of tutorial

/cc: #4217
Move mast static method to the section on methods

/cc: #4217
tutorial: Move method discussion after closures, before generics

/cc: #4217
tutorial: Typos
tutorial: Update for moves based on type

/cc: #4217
tutorial: update intro
tutorial: Fix formatting
tutorial: Remove confusing discussion about semicolons

This takes up a lot of words and isn't very clear. The previous
discussion gets they idea across.

/cc: #4217
tutorial: Remove mutable vector syntax
tutorial: Remove the entire 'Types' section

It's not interesting

/cc: #4217
tutorial: Remove the section on constants

We can mention that constants are declared with 'const' in one line.
Don't need an entire section.
tutorial: Integrate constants into main intro text
tutorial: It doesn't matter that Rust identifiers are the same as C