State management

get

```rust use zoon::State; let state = State::new(); assert!(state.get().is_none());

assert_eq!(state.set(92), Ok(()));

assert!(state.get().issome()); ## get_or_init rust use zoon::State; let state = State::new(); let value = state.getorinit(|| 92); asserteq!(value, &92); let value = state.getorinit(|| unreachable!()); asserteq!(value, &92); ## get_or_try_init rust use zoon::State; let state = State::new(); asserteq!(state.getortryinit(|| Err(())), Err(())); assert!(state.get().isnone()); let value = state.getortryinit(|| -> Resulteq!(value, Ok(&92)); assert_eq!(state.get(), Some(&92)) ```

## intoinner ```rust use zoon::State; let state: State = State::new(); asserteq!(state.into_inner(), None);

let state = State::new(); state.set("hello".tostring()).unwrap(); asserteq!(state.intoinner(), Some("hello".tostring())); ```

## take ```rust use zoon::State; let mut state: State = State::new(); assert_eq!(state.take(), None);

let mut state = State::new(); state.set("hello".tostring()).unwrap(); asserteq!(state.take(), Some("hello".tostring())); asserteq!(state.get(), None); ```