[pre-RFC] linear types, take 2

Thank you for that... I agree, a Linear marker as you describe is better than what I have, and brings my proposal a lot closer to @eddyb's (source), which is probably a good thing. The major difference between our two approaches is that I allow a linear type to be disposed by moving its data out, where he explicitly destroys a linear type using the mem::forget intrinsic.

I interpreted ? as meaning the trait may or may not apply to the type, so that a T: ?Linear must be compilable with both linear and non-linear arguments, and added the syntax !Linear to enforce that the type argument not be linear (and T: Linear to enforce that the type be linear), where the default would be that the linearity of the type would be inferred. I think this is the most natural way to read the code. It may be a change from how the syntax is interpreted today, but I don't think it's backwards-incompatible... Default of Sized trait bound is "on", of all other currently existing traits is "off", and of the proposed Linear would be "inferred".

@kennytm, that probably is an easier fit in the current language, but I find it more awkward than the proposal, since you would have to write and read double-negatives pretty frequently...