nn.Linear is non-blocking (even corner cases)

This PR was fun. It makes nn.Linear non-blocking. Includes unit tests. It should be backwards compatible.

fixes https://github.com/torch/nn/issues/77