Palindromizing the strings Introduction
For the ones who don't know, a palindrome is when a string is equal to the string backwards (with exception to interpunction, spaces, etc.). An example of a palindrome is:
abcdcba

If you reverse this, you will end up with:
abcdcba

Which is the same. Therefore, we call this a palindrome. To palindromize things, let's take a look at an example of a string:
adbcb

This is not a palindrome. To palindromize this, we need to merge the reversed string into the initial string at the right of the initial string, leaving both versions intact. The shorter, the better.
The first thing we can try is the following:
adbcb
bcbda
^^ ^^

Not all characters match, so this is not the right position for the reversed string. We go one step to the right:
adbcb
 bcbda
 ^^^^

This also doesn't match all characters. We go another step to the right:
adbcb
  bcbda

This time, all characters match. We can merge both string leaving the intact. The final result is:
adbcbda

This is the palindromized string.

The Task
Given a string (with at least one character) containing only lowercase letters (or uppercase, if that fits better), output the palindromized string.

Test cases
Input     Output

abcb      abcba
hello     hellolleh
bonobo    bonobonob
radar     radar
hex       hexeh

This is code-golf, so the submission with the least amount of bytes wins!
Pyth (commit b93a874), 11 bytes

.VkI_IJ+zbB


Test suite

This code exploits a bug in the current version of Pyth, commit b93a874. The bug is that _IJ+zb is parsed as if it was q_J+zbJ+zb, which is equivalent to _I+zb+zb, when it should (by the design intention of Pyth) be parsed as q_J+zbJ, which is equivalent to _I+zb. This allows me to save a byte - after the bug is fixed, the correct code will be .VkI_IJ+zbJB. I'll explain that code instead.

Basically, the code brute forces over all possible strings until it finds the shortest string that can be appended to the input to form a palindrome, and outputs the combined string.

.VkI_IJ+zbJB
                z = input()
.Vk             For b in possible strings ordered by length,
       +zb      Add z and b,
      J         Store it in J,
    _I          Check if the result is a palindrome,
   I            If so,
          J     Print J (This line doesn't actually exist, gets added by the bug.
          B     Break.