added one-time save and load

fixes #2313, and added as  as a ceci base behaviour for bricks to exploit. 
whatever brick relies on this functionality should not be calling load() if there's nothing to load, so this is a signal to brick devs that they're doing something wrong. That said there's a "hasData()" function missing so that devs can determine whether to add UI / active code for loading