The memory 306, which can include both read-only memory (ROM) and random access memory (RAM), can provide instructions and data to the processor 304. A portion of the memory 306 can also include non-volatile random access memory (NVRAM). The processor 304 typically performs logical and arithmetic operations based on program instructions stored within the memory 306. The instructions (a.k.a., software) stored in the memory 306 can be executed by the processor 304 to perform the methods described herein. The processor 304 and memory 306 together form a processing system that stores and executes software. As used herein, “software” means any type of instructions, whether referred to as software, firmware, middleware, microcode, etc. which can configure a machine or device to perform one or more desired functions or processes. Instructions can include code (e.g., in source code format, binary code format, executable code format, or any other suitable format of code). The instructions, when executed by the one or more processors, cause the processing system to perform the various functions described herein.