Removing the void specializations for std::future and std::promise

As noted in the reference, this would be possible if void were a regular type.

void get_value() {
    void x;
    return x;
}

This is the way it works in some other languages, so it's not without precedent. In other languages it's called the "unit" type, because it has exactly one possible value. (Other languages also have the "null" type, which has no possible values, so if you try to create one you get an error. It's named "null" but it's unrelated to null pointers.)