Righting a wrong in the Session library

 - Change userdata(), flashdata(), tempdata() to return all the respective data when no parameter is passed.
 - Revert the addition of all_flashdata().
 - Deprecate all_userdata().
 - Fix related changelog entries that were all inconsistent.
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index ac97b94..d9f2f50 100644
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -238,9 +238,14 @@
 	 * @param	string	Item key
 	 * @return	string	Item value or NULL if not found
 	 */
-	public function userdata($item)
+	public function userdata($item = NULL)
 	{
-		return isset($this->userdata[$item]) ? $this->userdata[$item] : NULL;
+		if (isset($item))
+		{
+			return isset($this->userdata[$item]) ? $this->userdata[$item] : NULL;
+		}
+
+		return isset($this->userdata) ? $this->userdata : array();
 	}
 
 	// ------------------------------------------------------------------------
@@ -248,35 +253,12 @@
 	/**
 	 * Fetch all session data
 	 *
+	 * @deprecated	3.0.0	Use userdata() with no parameters instead
 	 * @return	array	User data array
 	 */
 	public function all_userdata()
 	{
-		return isset($this->userdata) ? $this->userdata : NULL;
-	}
-
-	// ------------------------------------------------------------------------
-
-	/**
-	 * Fetch all flashdata
-	 *
-	 * @return	array	Flash data array
-	 */
-	public function all_flashdata()
-	{
-		$out = array();
-
-		// loop through all userdata
-		foreach ($this->all_userdata() as $key => $val)
-		{
-			// if it contains flashdata, add it
-			if (strpos($key, self::FLASHDATA_KEY.self::FLASHDATA_OLD) !== FALSE)
-			{
-				$key = str_replace(self::FLASHDATA_KEY.self::FLASHDATA_OLD, '', $key);
-				$out[$key] = $val;
-			}
-		}
-		return $out;
+		return isset($this->userdata) ? $this->userdata : array();
 	}
 
 	// ------------------------------------------------------------------------
@@ -417,11 +399,25 @@
 	 * @param	string	Item key
 	 * @return	string
 	 */
-	public function flashdata($key)
+	public function flashdata($key = NULL)
 	{
-		// Prepend key and retrieve value
-		$flashdata_key = self::FLASHDATA_KEY.self::FLASHDATA_OLD.$key;
-		return $this->userdata($flashdata_key);
+		if (isset($key))
+		{
+			return $this->userdata(self::FLASHDATA_KEY.self::FLASHDATA_OLD.$key);
+		}
+
+		// Get our flashdata items from userdata
+		$out = array();
+		foreach ($this->userdata() as $key => $val)
+		{
+			if (strpos($key, self::FLASHDATA_KEY.self::FLASHDATA_OLD) !== FALSE)
+			{
+				$key = str_replace(self::FLASHDATA_KEY.self::FLASHDATA_OLD, '', $key);
+				$out[$key] = $val;
+			}
+		}
+
+		return $out;
 	}
 
 	// ------------------------------------------------------------------------
@@ -514,11 +510,25 @@
 	 * @param	string	Item key
 	 * @return	string
 	 */
-	public function tempdata($key)
+	public function tempdata($key = NULL)
 	{
-		// Prepend key and return value
-		$tempdata_key = self::FLASHDATA_KEY.self::FLASHDATA_EXP.$key;
-		return $this->userdata($tempdata_key);
+		if (isset($key))
+		{
+			return $this->userdata(self::FLASHDATA_KEY.self::FLASHDATA_EXP.$key);
+		}
+
+		// Get our tempdata items from userdata
+		$out = array();
+		foreach ($this->userdata() as $key => $val)
+		{
+			if (strpos($key, self::FLASHDATA_KEY.self::FLASHDATA_EXP) !== FALSE)
+			{
+				$key = str_replace(self::FLASHDATA_KEY.self::FLASHDATA_EXP, '', $key);
+				$out[$key] = $val;
+			}
+		}
+
+		return $out;
 	}
 
 	// ------------------------------------------------------------------------
@@ -531,13 +541,12 @@
 	 */
 	protected function _flashdata_mark()
 	{
-		foreach ($this->all_userdata() as $name => $value)
+		foreach ($this->userdata() as $name => $value)
 		{
 			$parts = explode(self::FLASHDATA_NEW, $name);
 			if (count($parts) === 2)
 			{
-				$new_name = self::FLASHDATA_KEY.self::FLASHDATA_OLD.$parts[1];
-				$this->set_userdata($new_name, $value);
+				$this->set_userdata(self::FLASHDATA_KEY.self::FLASHDATA_OLD.$parts[1], $value);
 				$this->unset_userdata($name);
 			}
 		}
@@ -552,7 +561,7 @@
 	 */
 	protected function _flashdata_sweep()
 	{
-		$userdata = $this->all_userdata();
+		$userdata = $this->userdata();
 		foreach (array_keys($userdata) as $key)
 		{
 			if (strpos($key, self::FLASHDATA_OLD))
@@ -581,7 +590,7 @@
 
 		// Unset expired elements
 		$now = time();
-		$userdata = $this->all_userdata();
+		$userdata = $this->userdata();
 		foreach (array_keys($userdata) as $key)
 		{
 			if (strpos($key, self::FLASHDATA_EXP) && $expirations[$key] < $now)