modernize std::deque

* use a proper exported data type with private fields
* implement core::container::Container
* use the current constructor convention
* use explicit self
* get rid of DVec and the mutable fields

Closes #2343
add a Mutable implementation (clear) to std::deque
deque: rm old return statements
deque: separate the methods that need Copy
deque: avoid Copy in the get function
deque: avoid Copy in peek_{front,back}
deque: avoid Copy in pop_{front,back}
deque: avoid Copy for get
deque: avoid Copy in grow
deque: get rid of Copy requirement

Closes #3748
auto merge of #4993 : thestinger/rust/deque, r=graydon

Closes #3748 and #2343.