Added NBOptionalPush API

NBOptionalPush adds item to circular buffer only if
there is free space. Otherwise it evicts passed item.