Append missing padding after last field of struct

This patch fixes issue #13186.

When generating constant expression for enum, it is possible that
alignment of expression may be not equal to alignment of type.  In that
case space after last struct field must be padded to match size of value
and size of struct. This commit adds that padding.

See detailed explanation in src/test/run-pass/trans-tag-static-padding.rs
Be more clear about what this lambda expression does
Give more explanation when introducing closures
Demonstrate accessing external variable in first example
Some more closure changes
std: Add experimental networking methods

The underlying I/O objects implement a good deal of various options here and
there for tuning network sockets and how they perform. Most of this is a relic
of "whatever libuv provides", but these options are genuinely useful.

It is unclear at this time whether these options should be well supported or
not, or whether they have correct names or not. For now, I believe it's better
to expose the functionality than to not, but all new methods are added with
an #[experimental] annotation.
rustc: Don't die on 0-length pattern idents

These often crop up when using default methods that don't actually bind their
argument names.

Closes #13775
test: Add a compile-fail-fulldeps test suite

Compile-fail tests for syntax extensions belong in this suite which has correct
dependencies on all artifacts rather than just the target artifacts.

Closes #13818
Fix typo
Remove extra semicolons
Suggested revisions to PR 13676.

Most important: distinguish function decl sugar for omitting `-> ()`
from type inference on closures.  I also tried to add a couple more
examples to further emphasize this distinction.  Note that this sugar
(of omitting `-> ()`) is actually already briefly mentioned in an
earlier section, so it is a little tricky deciding whether to put more
material here, or to move it up to the previous section.

Other drive-by fixes:

 * Fix the line length of the code blocks to fit in the width provided
   in the rendered HTML

 * Some minor revisions to wording (e.g. try to clarify in some cases
   where a type mismatch is arising).
native: Always open a file with Open/Write modes

Previously, windows was using the CREATE_NEW flag which fails if the file
previously existed, which differed from the unix semantics. This alters the
opening to use the OPEN_ALWAYS flag to mirror the unix semantics.

Closes #13861
Allow manual implementations of built-in traits

[RFC #3]

cc #13231
librustc: Remove `~"string"` and `&"string"` from the language
Merge pull request #1 from pnkfelix/clarify-omit-unit-vs-inference

Suggested revisions to PR 13676.
rustdoc tutorial: grammar change in list comments
Fixed outdated note in the tutorial
Add more comprehensive unit tests for SIMD binops
BigUint always use u64 as the internal machine unsigned integer

This change allow a speedup of ~1.5 on shootout-pidigits on a i32
system.  `DoubleBigDigit` is used to abstract the internal
unsigned integer used in computation to simplity future
architecture specialization.

`BigDigit::from_uint` and `BigDigit::to_uint` become
`BigDigit::from_doublebigdigit` and `BigDigit::to_doublebigdigit`.

[breaking-change]
auto merge of #13878 : brutal-chaos/rust/tutorial_grammar, r=alexcrichton